1 #ifndef ALIMCANALYSISUTILS_H
2 #define ALIMCANALYSISUTILS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 //_________________________________________________________________________
8 // Class for analysis utils for MC data
9 // stored in stack or event header.
11 // - method to check the origin of a given track/cluster
12 // - method to obtain the generated jets
14 //*-- Author: Gustavo Conesa (INFN-LNF)
16 // --- ROOT system ---
22 //--- AliRoot system ---
23 class AliCaloTrackReader ;
26 class AliMCAnalysisUtils : public TObject {
29 AliMCAnalysisUtils() ; // ctor
30 virtual ~AliMCAnalysisUtils() ;//virtual dtor
32 AliMCAnalysisUtils & operator = (const AliMCAnalysisUtils & ) ;//cpy assignment
33 AliMCAnalysisUtils(const AliMCAnalysisUtils & mcu) ; // cpy ctor
37 //--------------------------------------
38 //Enum with tag for origin of particles
39 //--------------------------------------
41 //"Mostly" photon parent types on line 1,
43 //then "mostly" electron parent types on line 2, (e.g. electrons can
44 //come from pi0 decay)
45 //then charged particles on line 3,
46 //followed by other and unknown on line 4
47 enum mcTypes { kMCPhoton, kMCPrompt, kMCFragmentation, kMCISR, kMCPi0Decay, kMCEtaDecay, kMCOtherDecay, kMCConversion,
48 kMCElectron, kMCEFromCFromB, kMCEFromC, kMCEFromB, kMCZDecay, kMCWDecay,
49 kMCMuon, kMCPion, kMCPi0, kMCKaon, kMCEta, kMCProton, kMCAntiProton, kMCNeutron, kMCAntiNeutron,
50 kMCOther, kMCUnknown, kMCBadLabel } ;
52 //--------------------------------------
53 // Methods to check origin of clusters
54 //--------------------------------------
56 Int_t CheckCommonAncestor(const Int_t index1, const Int_t index2, AliCaloTrackReader* reader,
57 Int_t & ancPDG, Int_t & ancStatus, TLorentzVector & momentum, TVector3 & v) ;
58 Int_t CheckOrigin(const Int_t label, AliCaloTrackReader * reader, const Int_t input) ;
59 //Check the label of the most significant particle but do checks on the rest of the contributing labels
60 Int_t CheckOrigin(const Int_t *label, const Int_t nlabels, AliCaloTrackReader * reader, const Int_t input) ;
62 Int_t CheckOriginInStack(const Int_t *labels, const Int_t nlabels, AliStack * stack) ;
63 Int_t CheckOriginInAOD (const Int_t *labels, const Int_t nlabels, TClonesArray* mcparticles) ;
65 void CheckOverlapped2GammaDecay(const Int_t *labels, const Int_t nlabels, const Int_t mesonIndex, AliStack * stack, Int_t & tag);
66 void CheckOverlapped2GammaDecay(const Int_t *labels, const Int_t nlabels, const Int_t mesonIndex, TClonesArray* mcparticles, Int_t & tag);
68 //Check or set the bits produced in the above methods
69 void SetTagBit(Int_t &tag, const UInt_t set) const {
70 // Set bit of type set (mcTypes) in tag
74 Bool_t CheckTagBit(const Int_t tag, const UInt_t test) const {
75 // Check if in tag the bit test (mcTypes) is set.
76 if (tag & (1<<test) ) return kTRUE ;
80 //--------------------------------------
82 //--------------------------------------
84 // Method to recover MC jets stored in generator
85 TList * GetJets(AliCaloTrackReader * const reader) ;
87 void SetDebug(Int_t deb) { fDebug=deb ; }
88 Int_t GetDebug() const { return fDebug ; }
90 void SetMCGenerator(TString mcgen) { fMCGenerator = mcgen ; }
91 TString GetMCGenerator() const { return fMCGenerator ; }
93 void Print(const Option_t * opt) const;
96 Int_t fCurrentEvent; // Current Event
97 Int_t fDebug; // Debug level
98 TList * fJetsList; // List of jets
99 TString fMCGenerator; // MC geneator used to generate data in simulation
101 ClassDef(AliMCAnalysisUtils,3)
105 #endif //ALIMCANALYSISUTILS_H