p+p @ 1.25 GeV - systematic studies

Results from pp analysis with the minimized code. Input: HTrackCandidate, simple user track selection, track cleaner (based on dst gen2).

EFF matrix - description

Efficiency Matrix reconstructor.

HNtuple utility - user friendly NTuple usage

To avoid the inconveniences of ROOT TNtuple I have developed HNtuple. First, the user can book an ntuple as usual, but then, instead of filling Float_t* array and taking care of the proper order, one fills variables simply like myNtuple["mom"] = 2.0; The other option is that the list of variables in ntuple is not defined and just after first filling procedure it is fixed. The output is however a native NTuple that the user can open / read files without loading any additional library.

PAT - PostDST Analysis Tool

Intermediate tool for data analysis from DST (DSTSim) level up to any combination of single tracks. Common event data as well as particle (track) data are conveniently propagated and stored to the output file. User defined cuts (selections) can be applied (i.e. track selection, time reconstruction, particle identification).


Here you can download the source code: filtering.tar.gz (version from 6 July 2007)

Warning! Makefile in the code is ugly and requires HADDIR to be set in order to read HYDRA libraries (this is only because of HGeantKine)
- I will replace it soon!
If you like my "tool" keep an eye on upcoming updates and bug fixes ;-)

Create your own directory. The code will be unpacked to your present directory.
Unpack: tar xvfz filtering.tar.gz
Compile: make - it is a standalone program. Clean code: make clean

Motivation and description

  • It is very often that people are told to filter some simulations with some matrices. Our matrices have various range (1 sector, 6 sectors), various units (deg, rad) and various number of dimensions (2, 3). It is a technical and not necessary knowledge how to retrieve the proper value from a given matrix. This I want to hide in HMatrix class, which after proper definition (orded of axes, units) will work.

  • In principle there are two basic sources. Native PLUTO with "info" and "data" branches (and inside "data" we get PParticle objects). On the other hand we have HGEANT output, HGeantKine branch coming either from PLUTO or from UrQMD simulation (with slightly different information stored). I want to make the filtering program independent of the source format. The user will show only which files he/she wants to read.

  • There are a few algorithms of momentum (+anglular) smearing. For example "Schicker's" and "Geidar's" or perhaps something else. This will be provided also as a possibility to choose.

  • Ultimately we want to filter: single particles and to build some more objects from them, like invariant mass of something or missing mass of something. Therefore I have developed HParticle (a class for a single particle) and HNPartcile for complex composites. They are components of a class HParticlePool. Now, I can for example define the beam and the target (necessary for missing mass calculations or boosting). I can then define any number of objects called "invariant" or "missing". If I define "invariant" of a given name like "invEpEm" and I add "ep" and "em" then in each event it will be created out of all e+ / e- combinations. Note that for composite objects the common vertex flag and the opening angle flag between tracks will be available for an easy selection. The content of HParticlePool objects will be dumped to NTuple.

Learn by example

  • First, download some files produced in simulation. I suggest i.e. PLUTO simulation for p+p and creation of Delta+ resonance. You can copy /u/przygoda/FILTER2007/DeltaP_Dalitz.root and /u/przygoda/FILTER2007/DeltaP_PPi0.root

  • The source code is very fresh. Please, be aware that some bugs may occur and first of all I will change Makefile to something reasonable and not dependent on HYDRA libraries.

   HMatrixFile matrixFile;

   HSourceFile sourceFile;
   sourceFile.open("DeltaP_PPi0.root"); // add as many source files as you want

   HOutputFile outputFile("test.root", "recreate");

   HFilter matrixFilter( matrixFile, "Test filter 2007" );
   matrixFilter.smear( "ideal" ); // define smearing you want to use
   matrixFilter.openingangle( 9.0 ); // define opening angle to filter
   matrixFilter.add( 2, "EPlusAcc" ); // add all ACC and EFF matrices you want to filter with
   matrixFilter.add( 3, "EMinusAcc" );
   matrixFilter.add( 14, "ProtonAcc" );
   matrixFilter.add( 2, "EPlusEff" );
   matrixFilter.add( 3, "EMinusEff" );
   matrixFilter.add( 14, "ProtonEff" );

   cout << matrixFilter.getName() << endl;

   HParticlePool particlePool( sourceFile, outputFile, matrixFilter );
   particlePool.target("p", 0., 0., 0.);
   particlePool.beam("p", 0., 0., 2.0);

   particlePool.add("P", "p");

   particlePool.add("Ep", "ep");

   particlePool.add("Em", "em");

   particlePool.add("invEpEm", "ep", "em");

   particlePool.add("invPEpEm", "ep", "em", "p");

   // particlePool.missing("missPPEpEm");
   // particlePool.add("missPPEpEm", "ep", "em", "p", "p");
   // do not use it today since HMissingFactory is not fully debugged ;-)


  • UML diagram:

    UML diagram

I Attachment Action Size Date Who Comment
filtering.tar.gzgz filtering.tar.gz manage 36 K 2007-07-06 - 15:58 WitoldPrzygoda Source code
filtering_diagram.gifgif filtering_diagram.gif manage 12 K 2007-07-06 - 12:29 WitoldPrzygoda UML diagram
filtering_gsi_6jul2007.pdfpdf filtering_gsi_6jul2007.pdf manage 98 K 2007-07-06 - 15:01 WitoldPrzygoda Short motivations
Topic revision: r16 - 2009-09-21, WitoldPrzygoda
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki Send feedback | Imprint | Privacy Policy (in German)