#include "hpidgeanttrackset.h"

HPidGeantTrackSet


class description - source file - inheritance tree (.pdf)

class HPidGeantTrackSet : public TObject

Inheritance Chart:
TObject
<-
HPidGeantTrackSet

    protected:
void bringCorrelatedDetectorsToFront() void diagnosis() Int_t findFirstHitInTof(Int_t trackID, Int_t* count, Int_t storeFirstTrack = 2) Bool_t isSingleDetector(UInt_t flag) void sortCorrelatedDetectors() void sortSingleDetectors() void sortsmart() void swap(Int_t i, Int_t j, TArrayF& array) void swap(Int_t i, Int_t j, TArrayI& array) void swapVectors(Int_t i, Int_t j) public:
HPidGeantTrackSet() HPidGeantTrackSet(const HPidGeantTrackSet& source) virtual ~HPidGeantTrackSet() Int_t addToContributingTracks(Int_t index, UInt_t detector) void addTrackWeightToDetector(Float_t weight, Int_t trackID, UInt_t detector) TLorentzVector* buildGeantLorentzVector(Int_t iPos = 0) const TVector3* buildGeantMomentumVector(Int_t iPos = 0) const static TClass* Class() virtual void Clear(Option_t* opt) Int_t enlargeArrays() void fillFromMetaMatch(HMetaMatch* pMetaMatch) UInt_t getCorrelationFlag(Int_t i = 0) const Int_t getGeantGrandParentID(Int_t i = 0) const Int_t getGeantGrandParentTrackID(Int_t i = 0) const static HGeantKine* getGeantKine(Int_t iTrack, HCategory* pCat = 0) Int_t getGeantMediumID(Int_t i = 0) const Float_t getGeantMomX(Int_t i = 0) const Float_t getGeantMomY(Int_t i = 0) const Float_t getGeantMomZ(Int_t i = 0) const Int_t getGeantParentID(Int_t i = 0) const Int_t getGeantParentTrackID(Int_t i = 0) const Int_t getGeantPID(Int_t i = 0) const Int_t getGeantProcessID(Int_t i = 0) const Int_t getGeantTrackID(Int_t i = 0) const Float_t getGeantVertexX(Int_t i = 0) const Float_t getGeantVertexY(Int_t i = 0) const Float_t getGeantVertexZ(Int_t i = 0) const Float_t getGenInfo(Int_t i = 0) const Float_t getGenInfo1(Int_t i = 0) const Float_t getGenInfo2(Int_t i = 0) const Float_t getGenWeight(Int_t i = 0) const Short_t getInnerMdcTrack(UInt_t n) const Float_t getInnerMdcWeight(UInt_t iIdx) const Short_t getMetaTrack(UInt_t n) const Bool_t getMomentumComponents(Float_t& momx, Float_t& momy, Float_t& momz, Int_t i = 0) Short_t getMostCommonCorrelation() const UInt_t getNCorrelatedTrackIds() const UInt_t getNInnerMdcTracks() const UInt_t getNMetaTracks() const UInt_t getNOuterMdcTracks() const UInt_t getNRichIPUTracks() const UInt_t getNRichTracks() const UInt_t getNShowerTracks() const UInt_t getNTOFTracks() const Short_t getOuterMdcTrack(UInt_t n) const Float_t getOuterMdcWeight(UInt_t iIdx) const Int_t getParticleIndex(Int_t trackID) Short_t getRichIPUTrack(UInt_t n) const Float_t getRichIPUWeight(UInt_t iIdx) const Short_t getRichTrack(UInt_t n) const Float_t getRichWeight(UInt_t iIdx) const Short_t getShowerTrack(UInt_t n) const Float_t getShowerWeight(UInt_t iIdx) const Short_t getTOFTrack(UInt_t n) const Float_t getTOFWeight(UInt_t iIdx) const Float_t getTotalMomentum(Int_t i = 0) const virtual TClass* IsA() const Bool_t isPartOfTrackSet(Int_t trackID) HPidGeantTrackSet& operator=(const HPidGeantTrackSet&) virtual void Print(Option_t* option) const void print() const void reset() virtual void ShowMembers(TMemberInspector& insp, char* parent) Int_t shrinkArrays() virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) Bool_t wasSeenInDetector(const UInt_t flag, const UInt_t detector, Bool_t verbose = kFALSE) const

Data Members


    protected:
Bool_t isSorted indicates whether the contributing tracks have been sorted according to Short_t sNCorrTrackIds How many different geant Ids where found in this set of matched hits ? UInt_t nRICHTracks UInt_t nRICHIPUTracks UInt_t nInnerMdcTracks UInt_t nOuterMdcTracks UInt_t nShowerTracks UInt_t nTOFTracks TArrayI correlatedTrackIds [sNCorrTrackIds] // A unique list of correlated Ids - size is fixed to avoid new delete calls! TArrayI correlationFlags [sNCorrTrackIds] // List of bit patterns storing which detectors saw the tracks in corrTrackIds TArrayI ProcessIds [sNCorrTrackIds] // A list of the processes in which the correlated particles have been made TArrayI ParentIds [sNCorrTrackIds ] // A list of the parent IDs of the correlated particles TArrayI Parents [sNCorrTrackIds ] // A list of the parents track IDs of the correlated particles TArrayI GrandParentIds [sNCorrTrackIds ] // A list of the grand parent IDs of the correlated particles TArrayI GrandParents [sNCorrTrackIds ] // A list of the grand parents track IDs of the correlated particles TArrayF GenInfo [sNCorrTrackIds ] TArrayF GenInfo1 [sNCorrTrackIds ] TArrayF GenInfo2 [sNCorrTrackIds ] TArrayF GenWeight [sNCorrTrackIds ] TArrayF VertexX [sNCorrTrackIds] // X,Y,Z Coordinate of the particles creation vertex TArrayF VertexY [sNCorrTrackIds] TArrayF VertexZ [sNCorrTrackIds] TArrayI GeantPIDs [sNCorrTrackIds] // A list of the Geant PIDs of the correlated particles TArrayI MediumIds [sNCorrTrackIds] // A list of the Medium IDs in which the correlated particles were created TArrayF GeantMomX [sNCorrTrackIds] // Arrays holding the three momentum-components of all involved particles TArrayF GeantMomY [sNCorrTrackIds] TArrayF GeantMomZ [sNCorrTrackIds] TArrayF ShowerWeights [sNCorrTrackIds] // Weights of all contributing particles to the hits that where reconstructed TArrayF TOFWeights [sNCorrTrackIds] // in the different subsystems TArrayF RICHWeights [sNCorrTrackIds] TArrayF RICHIPUWeights [sNCorrTrackIds] TArrayF InnerMDCWeights [sNCorrTrackIds] TArrayF OuterMDCWeights [sNCorrTrackIds] TArrayI hasHitInShower [sNCorrTrackIds] // Booleans indicating the systems (0,1) in which a contributing particle TArrayI hasHitInTOF [sNCorrTrackIds] // has been seen public:
static const enum HPidGeantTrackSet:: kOutOfBound static Int_t nullparent

Class Description

                                                                            
 HPidGeantTrackSet                                                          
                                                                            
 Geant tracks matched in HPidTrackCand                                      
                                                                            


HPidGeantTrackSet(const HPidGeantTrackSet& source)

void reset(void)//OK

Bool_t wasSeenInDetector(const UInt_t flag, const UInt_t detector,Bool_t verbose) const //OK

Short_t getRichTrack(UInt_t iIdx) const //OK
 Get iIdx-th track from list of correlated tracks that was seen in RICH

Short_t getRichIPUTrack(UInt_t iIdx) const //OK
 Get iIdx-th track from list of correlated tracks that was seen in RICH-IPU

Short_t getInnerMdcTrack(UInt_t iIdx) const //OK
 Get iIdx-th track from list of correlated tracks that was seen in the inner MDC

Short_t getOuterMdcTrack(UInt_t iIdx) const//OK
 Get iIdx-th track from list of correlated tracks that was seen in the outer MDC

Short_t getTOFTrack(UInt_t iIdx) const//OK
 Get iIdx-th track from list of correlated tracks that was seen in TOF

Short_t getShowerTrack(UInt_t iIdx) const//OK
 Get iIdx-th track from list of correlated tracks that was seen in Shower

Short_t getMetaTrack(UInt_t iIdx) const//Well
 Get iIdx-th track from list of correlated tracks that was seen in META

HGeantKine* getGeantKine(Int_t iTrack, HCategory *pCat)//OK
 Return HGeantKine object corresponding to iTrack from pCat.
 If the pCat is not set (NULL) catGeantKine category from gHades is used.

void swapVectors(Int_t i, Int_t j)//OK

void swap(Int_t i, Int_t j, TArrayI& array)//OK

void swap(Int_t i, Int_t j, TArrayF& array) //OK

void sortsmart(void) //OK
1. All particles which where seen in more than one detector are arranged BEFORE any particle that was seen in
   only one single subsystem. This is required because lonely hits in META have a HIGH bit (64) and would therefore
   be ranked higher than a combination of the three inner detectors. Anyway we mostly care for CORRELATIONS
   between detectors, so we bring the relevant particle indices to the front of the array.

void bringCorrelatedDetectorsToFront() //OK
We loop over all contributing particles

void sortCorrelatedDetectors() //OK

void sortSingleDetectors() //OK

Bool_t isSingleDetector(UInt_t flag) //OK

Bool_t getMomentumComponents(Float_t& momx, Float_t& momy, Float_t& momz, Int_t index)//OK

Float_t getTotalMomentum(Int_t index) const //OK

void fillFromMetaMatch(HMetaMatch* pMetaMatch) //OK

 Each track Id found in any of the hits is added once (and only once)
 to the list of correlated tracks. We store the degree of correlation right
 from the beginning in the datamembers correlatedTrackIds and correlationFlags.
 Also the geant PID, parent and process ID momentum, medium and system are
 stored in the corresponding arrays at the position corresponing to the position
 of the added particle. The common tracks are implicitly ranked by their degree of
 commonness using the following numerical code mapped to user-friendly names:

 kTrackNotSet         = 0x00,  // This object does not contain valid data
 kSeenInRICHIPU       = 0x01,  // RICH IPU has seen this trackid

 kSeenInOuterMDC      = 0x02,  // Outer Mdc has seen this trackid
 kSeenInRICH          = 0x04,  // RICH has seen this trackid
 kSeenInInnerMDC      = 0x08,  // Inner Mdc has seen this trackid

 kSeenInTOF           = 0x10,  // TOF has seen this trackid
 kSeenInShower        = 0x20,  // Shower has seen this trackid
 kSeenInMETA          = 0x40,  // One of the Meta dets has seen this trackid

 Thereby META detectors are ranked highest because there is no way to perform
 particle identification without a hit in META. The second-most important
 piece of information is the inner MDC segment because together with META data
 it allows momentum computation with KICKPLANE
 The third highest numerical code is given to the RICH ring because together with
 KICKTRACKS one can do lepton analysis if a ring is present.
 Outer MDC segments are given the lowest number because they are not essential
 for candidate searching. They only allow to apply high-resolution tracking.



Int_t shrinkArrays(void) //OK

Int_t enlargeArrays(void) //OK

void diagnosis() //OK

void Clear(Option_t *opt) //OK

void addTrackWeightToDetector(Float_t weight, Int_t trackID, UInt_t detector) //OK

Int_t getParticleIndex(Int_t trackID)//OK

Bool_t isPartOfTrackSet(Int_t trackID)//OK

TLorentzVector* buildGeantLorentzVector(Int_t iPos) const //OK
 Build TLorentzVector from the momentum and the particle mass from the track at position iPos in the array

TVector3* buildGeantMomentumVector(Int_t iPos) const //OK

Int_t addToContributingTracks(Int_t trackID, UInt_t detector) //OK

UInt_t getNMetaTracks(void) const //OK

void print(void) const //OK
 Print all the members

Int_t findFirstHitInTof(Int_t trackID,Int_t* count,Int_t storeFirstTrack)
-------------------------------------------------
 find the first track ID entering the TOF
 Used to suppress the secondaries created in the
 TOF itself.
        0 = realistic (secondaries included)
        1 primary particle is stored
        2 (default) the first track number entering the tof in SAME SECTOR is stored
        3 as 2 but condition on SAME SECTOR && MOD
        4 as 2 but SAME SECTOR && MOD && ROD

Float_t getRichWeight(UInt_t iIdx) const

Float_t getRichIPUWeight(UInt_t iIdx) const

Float_t getInnerMdcWeight(UInt_t iIdx) const

Float_t getOuterMdcWeight(UInt_t iIdx) const

Float_t getTOFWeight(UInt_t iIdx) const

Float_t getShowerWeight(UInt_t iIdx) const



Inline Functions


                      void ~HPidGeantTrackSet()
         HPidGeantTrackSet HPidGeantTrackSet(const HPidGeantTrackSet& source)
                    UInt_t getNRichTracks() const
                    UInt_t getNRichIPUTracks() const
                    UInt_t getNInnerMdcTracks() const
                    UInt_t getNOuterMdcTracks() const
                    UInt_t getNShowerTracks() const
                    UInt_t getNTOFTracks() const
                    UInt_t getNCorrelatedTrackIds() const
                   Short_t getMostCommonCorrelation() const
                      void Print(Option_t* option) const
                    UInt_t getCorrelationFlag(Int_t i = 0) const
                     Int_t getGeantTrackID(Int_t i = 0) const
                     Int_t getGeantPID(Int_t i = 0) const
                     Int_t getGeantParentID(Int_t i = 0) const
                     Int_t getGeantParentTrackID(Int_t i = 0) const
                     Int_t getGeantGrandParentID(Int_t i = 0) const
                     Int_t getGeantGrandParentTrackID(Int_t i = 0) const
                   Float_t getGenInfo(Int_t i = 0) const
                   Float_t getGenInfo1(Int_t i = 0) const
                   Float_t getGenInfo2(Int_t i = 0) const
                   Float_t getGenWeight(Int_t i = 0) const
                   Float_t getGeantVertexX(Int_t i = 0) const
                   Float_t getGeantVertexY(Int_t i = 0) const
                   Float_t getGeantVertexZ(Int_t i = 0) const
                     Int_t getGeantMediumID(Int_t i = 0) const
                     Int_t getGeantProcessID(Int_t i = 0) const
                   Float_t getGeantMomX(Int_t i = 0) const
                   Float_t getGeantMomY(Int_t i = 0) const
                   Float_t getGeantMomZ(Int_t i = 0) const
                   TClass* Class()
                   TClass* IsA() const
                      void ShowMembers(TMemberInspector& insp, char* parent)
                      void Streamer(TBuffer& b)
                      void StreamerNVirtual(TBuffer& b)
        HPidGeantTrackSet& operator=(const HPidGeantTrackSet&)


Author: Marcin Jaskula 11/11/2002
Last update: Fri Jan 26 12:22:18 2007


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.