Code Monkey home page Code Monkey logo

ant's People

Contributors

a2felix avatar a2wagner avatar collicott avatar emornacchi avatar hseymour95 avatar jwettig avatar lheijken avatar michaelperry2 avatar msobotzi avatar neiser avatar osteffen avatar ppmartel avatar werthm avatar wgradl avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ant's Issues

Extend MC True particle matching to trees

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:

  1. the ParticleTypeTree from MCTrue
  2. The reconstructed particle leaves
  3. The best combination from the tree fitter

This could be done with iterators, see also #21

Rewrite Tree<T> with iterators

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

Geant + Pluto Input does not work

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

Clean up the SmartHistFactory classes

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.

hstack and SaveMultiImages

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.

AntSimSubmit infinite loop with decay string

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.

Ant hangs in interactive mode

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.

Make physics classes separate libraries

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.

Event preselection

Possibility to write selected events (probably calibrated, with some slowcontrol attached) to a new file and then run physics classes just on those.
This allows a drastic reduction of input data for most analyses.

Something like a GoAT file.

nparticles_data

Ant TEvent + Pluto Input: Off by one error

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

TaggerDetector_t Set/GetTaggEff wrong abstraction for slow control buffering

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.

Ant-cocktail crashes / does not work

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??

Refactoring: Too much code in Energy CalibModule GUIs

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.

const correctness flawed due to shared_ptr/unique_ptr usage

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

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.

Ant-pluto: Spammy output

are the listParticle() statements in PlutoExtensions.h needed? They just spam the console.. ?

TIDs for Pluto & Geant

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 crash: matrixstack::vector destruction

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.

Replace std::shared_ptr to std::unique_ptr in WrapTFile, AvgBuffer

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.

Ant-calib: giving non-existent path yields confusing error message

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.

Reorganize physics classes

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:

  • Reorganize folder structure, sort them more "logically" (but what is a good folder structure?)
  • Give the Physics interface some methods ala void GetDescription(string& short, string& long) (default empty) enabling nice overview output for the main executable Ant
  • Consistently name files after their contained physics classes, do not put more than one class into one file (for some that might create too many files)

gStyle crash

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.