a2-collaboration / ant Goto Github PK
View Code? Open in Web Editor NEWJust another analysis toolkit for A2
Just another analysis toolkit for A2
The utils::match1to1
is far from being easily usable when applied to particle trees, in particular in combination with the utils::TreeFitter
. Basically, one wants to compare and match three different things:
This could be done with iterators, see also #21
How does this work with friend methods?
got linker errors. put code in header file for now.
The current Tree<T>
is flawed concering const-correctness, and the user cannot choose whether iteration should happen depth or breadth first. STL iterators could be the right solution here. Also an iterator over the leaves only would be helpful in many situations, or iterators over certain classes of nodes...
See also #18
McTrue data is empty when running with a Geant and a Pluto file
example:
ant -i 1_geant.root -i 1_pluto.root -p CandidatesAnalysis -p ProtonCheck -m 10 -s Setup_2014-10_EPT_Prod
We should license this software properly.
This would enable automatic coverity checks (it's already prepared, but was rejected due to missing license).
see Ant-ECorr.
Compiles, but option parsing always fails.
Test of BinSettings input operator works
Loading previous fit parameters does not work. gives weird results.
"Use parameters from previous slice" seems has no effect?
The SmartHistFactory are historically pretty messy. It turned out that only SmartHistFactory is actually in use. The rest (such as "SmartHists") could be thrown away until a better implementation for this idea is found.
Determine bad fit by:
Would be extremely helpful for run-by-run calib
using SaveMultiImages() on a canvas containing an hstack creates root files that can't reproduce the original hstack/picture.
Only one histogram is there, others seem to be white.
The decay string p eta' [g rho0 [g pi0 [g g]]]
makes AntSimSubmit hang infinitely while parsing. Test case is already pushed in 147f4a3
Maybe just sanitize user-given decay strings, as the call to Ant-pluto already checks it and for filenames, something simpler is also appropiate I guess.
Add progress output (print % of file processed, eta, ...) when running with goat or geant input.
The unpacker prints this when using raw files.
A histogram with the X-Axis: "All in cb", "All-1 in cb, 1 in TAPS",...,"All in TAPS"
Useful to see expected multiplicities
I get the same output for
Ant-calib-dump -s Setup_2014_10_EPT_Prod -c TAPS_Energy_RelativeGains --params 4 --notouches
and
Ant-calib-dump -s Setup_2014_10_EPT_Prod -c TAPS_Energy_RelativeGains --params 4
Ant-chain does not work when a Tree is in a TDirectory
I just opened the Wiki for the Ant project. Please start writing there, and keep the README.md concise (provide links into the wiki). You may also copy the little documentation efforts as Doxygen comments into the wiki.
Ant occasionaly hangs when run outside the debugger and in interactive mode. It never hang during debugger runs or on blaster.
This might be related to the implementation of the ProgressCounter, which calls gettimeofday()
for each event. This could be optimized by having a seperate thread for doing this time measurement business.
In order to reduce compile time of the main program, provide each physics class as a shared library, possible only a factory method to create it. Then Ant
loads that library, gets the factory maker and creates the physics classes as usual. This replaces the PhysicsRegistry
.
The cmake
build system could prove helpful here, and it's strongly correlated to #33.
Apply this scheme also to plotters and Ant-plot
.
Useful resource for dlopen
: http://www.linuxjournal.com/article/3687 It mentions that __init
mechanism is broken. Check if that's still true.
when running with ant TEvent file and pluto file as input: the mctrue and reconstructed events are mismatched and off by one.
The first event has no McTrue information at all.
This might be due to the THeaderInfo entry in the treeEvent tree??
McTrue and Reconstructed angles of single particle events:
True matches reconstructed in the next event:
Event ===========================
MC True Size ==0
Event ===========================
true: 1.40481
rec: 0.453111
Event ===========================
true: 1.99634
rec: 1.34896
Event ===========================
true: 0.646541
rec: 1.91228
Event ===========================
true: 0.134019
rec: 0.635844
Event ===========================
true: 0.625658
rec: 0.130987
Event ===========================
true: 1.40737
rec: 0.59855
Event ===========================
true: 0.624472
rec: 1.35704
Event ===========================
true: 0.759307
rec: 0.638356
Event ===========================
true: 0.472393
rec: 0.751438
The current implementation of tagging efficincies provided to physics classes is incorrect, as it may change over the course of the event stream. In general, "changing" information passed to physics classes is only handled correctly if the information is contained within TEvent, or provided as a SlowControlVariable. The tagging efficiencies though are provided via the tagger detector instance directly, which is only correctly updated during reconstruction (and not during ProcessEvent of the physics classes). Those two phases differ in particular if slow control buffering is taking place!
The correct implementation would be to convert the tagging efficiencies information into a TSlowControl during reconstruction (that must probably be serialized into the Payload_String with cereal), then extract it again inside a to-be-created slow control variable (as it is already done for the tagger scalers). This way, the SlowControlManager correctly buffers the event.
Do something more useful in that case.
Fix rotated PID phi ange in a2Geant reader
2016-03-18 13:12:53,324 [WARN ] Logger.cc:55 : ROOTPStaticData::GetParticleID: peta not found
PChannel: invalid pids: 14001 0
Segmentation fault
WTF is a "peta" particle??
Refactor the GUI code, in particular for Energy (and there PID calibration GUIs). One could even provide the Energy::CalibType
and the strongly linked Energy::GUI_CalibType
as base classes for all GUIs which handle TCalibrationData
as backends.
The main data structure ant::TEvent
and ant::TEventData
use std::unique_ptr
and std::shared_ptr
for the rather complex inter-event data dependencies (for example, particles point to their candidate they were made of, etc.). However, the const
-ness of the TEvent given to physics classes does not apply to the objects managed as shared_ptr
. So users can change events in physics classes, and influencing other physics classes unknowingly. That's a huge design flaw...
Likewise, the ant::Tree structure is also not const correctly implemented.
Creating some cc_shared_ptr which transfers its own constness to the managed object could be a nice solution. But implementation is far from being trivial (see branch cc_shared).
Ant-pluto hangs when running:
$ Ant-pluto --reaction "p w [ g eta [ g g ] ]" --numEvents 10 --Emin 1420 --Emax 1580 -o pluto.root
Debugger shows that this is while adding rho0 decays in PlutoExtensions.h
Commenting out lines 81 to 87 in PlutoExtensions.h fixes this.
Help ways -w takes walltime in hours. But seems to be minutes...?
Can't we just use the HH:MM format?
are the listParticle() statements in PlutoExtensions.h needed? They just spam the console.. ?
Add valid TIDs to pluto data and pipe them through geant.
If too difficult to patch pluto: extra tool to add them to a pluto file (writes a new pluto tree with extra branch)
Geant should be easy.
ant.cc crashes on exit when run in "gui"/non-batch mode.
Somehere in the destruction of matrixstack::vector.
Probably together with TRint cleanups.
Debugger output not helpful.
Do not force the user of such utilities/wrappers to shared ownership, but provide only unique_ptr
. Can still be converted to shared_ptr
if required by the user. But since ROOT with its own idea about object ownership is involved, it's hard to tell if such an interface change has no side effects.
For example TH2TAPS always shows PBWO4 elements, even if not specified in setup
single root file approach does not scale enough
steffen@balster:~$ DISPLAY=:1 Ant-calib -a 30 -c TAPS_Energy_RelativeGains <non-existent-path>
2017-04-23 10:11:32,467 [WARN ] Manager.cc:100 : Can't open <non-existent-path> <non-existent-path> cannot be opened: No such file or directory
2017-04-23 10:11:32,467 [INFO ] Manager.cc:108 : Loaded 0 files from 1 provided filenames (0 %)
terminate called after throwing an instance of 'ant::ExpConfig::ExceptionNoSetup'
what(): No setup found in registry with name
Aborted
It can't open any files -> does not have a TAntHeander to get the setup name from
It should complain that there are no open files.
The number of physics classes is increasing, and some new user might not know where's a good place to look at. We could do:
void GetDescription(string& short, string& long)
(default empty) enabling nice overview output for the main executable Ant
Manual zooming on hsack y axis not possible :(
and
One a global y axis range is set, there is no way to UnSet it and use the automatic axis again. Argh.
:)
See https://www.youtube.com/watch?v=wvtFGa6XJDU
unsigned
should be used as bitmask, and not for any quantity or in APIs (see ant::TEvent
). STL containers size()
is a wart, according to talk.
Currently, we explicitly pass -Wl,--no-as-needed
to ld
to avoid linking errors to APLCONpp and to "dynamically" add physics classes at runtime (which are built as separate libraries, but still linked to Ant, see also #37 for a better implementation proposal).
After #37 is implemented, the proper library dependency could be implemented according to http://www.bnikolic.co.uk/blog/gnu-ld-as-needed.html
See also a03523f
Drawing Canvases (from PhysicsManager::Finish()) crashes because gSytle==nullptr
if a TCutG was loaded from a ROOT File before, as done for ParticleID.
Although gStyle is valid before TRint is created.
Fix: make sure gStyle is not null after creating the TRint instance.
Although styles set in rootlogon.C don;t work anymore arrgh
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.