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 ---
21 //--- AliRoot system ---
22 class AliCaloTrackReader ;
25 class AliMCAnalysisUtils : public TObject {
28 AliMCAnalysisUtils() ; // ctor
29 virtual ~AliMCAnalysisUtils() ;//virtual dtor
31 AliMCAnalysisUtils & operator = (const AliMCAnalysisUtils & ) ;//cpy assignment
32 AliMCAnalysisUtils(const AliMCAnalysisUtils & mcu) ; // cpy ctor
35 //"Mostly" photon parent types on line 1,
37 //then "mostly" electron parent types on line 2, (e.g. electrons can
38 //come from pi0 decay)
39 //then charged particles on line 3,
40 //followed by other and unknown on line 4
41 enum mcTypes {kMCPhoton, kMCPrompt, kMCFragmentation, kMCISR, kMCPi0Decay, kMCEtaDecay, kMCOtherDecay, kMCConversion,
42 kMCElectron, kMCEFromCFromB, kMCEFromC, kMCEFromB, kMCZDecay, kMCWDecay,
43 kMCMuon, kMCPion, kMCPi0, kMCKaon, kMCEta, kMCProton, kMCAntiProton, kMCNeutron, kMCAntiNeutron,
44 kMCOther, kMCUnknown, kMCBadLabel};
46 //Check only the label of the most significant particle
47 Int_t CheckCommonAncestor(const Int_t index1, const Int_t index2, AliCaloTrackReader* reader,
48 Int_t & ancPDG, Int_t & ancStatus, TLorentzVector & momentum) ;
49 Int_t CheckOrigin(const Int_t label, AliCaloTrackReader * reader, const Int_t input) ;
50 //Check the label of the most significant particle but do checks on the rest of the contributing labels
51 Int_t CheckOrigin(const Int_t *label, const Int_t nlabels, AliCaloTrackReader * reader, const Int_t input) ;
53 Int_t CheckOriginInStack(const Int_t *labels, const Int_t nlabels, AliStack * stack) ;
54 Int_t CheckOriginInAOD (const Int_t *labels, const Int_t nlabels, TClonesArray* mcparticles) ;
56 void CheckOverlapped2GammaDecay(const Int_t *labels, const Int_t nlabels, const Int_t mesonIndex, AliStack * stack, Int_t & tag);
57 void CheckOverlapped2GammaDecay(const Int_t *labels, const Int_t nlabels, const Int_t mesonIndex, TClonesArray* mcparticles, Int_t & tag);
59 TList * GetJets(AliCaloTrackReader * const reader) ;
61 void SetTagBit(Int_t &tag, const UInt_t set) const {
62 // Set bit of type set (mcTypes) in tag
66 Bool_t CheckTagBit(const Int_t tag, const UInt_t test) const {
67 // Check if in tag the bit test (mcTypes) is set.
68 if (tag & (1<<test) ) return kTRUE ;
72 void Print(const Option_t * opt)const;
74 void SetDebug(Int_t deb) {fDebug=deb;}
75 Int_t GetDebug() const {return fDebug;}
77 void SetMCGenerator(TString mcgen) {fMCGenerator=mcgen;}
78 TString GetMCGenerator() const {return fMCGenerator;}
81 Int_t fCurrentEvent; // Current Event
82 Int_t fDebug; // Debug level
83 TList * fJetsList; // List of jets
84 TString fMCGenerator; // MC geneator used to generate data in simulation
86 ClassDef(AliMCAnalysisUtils,3)
90 #endif //ALIMCANALYSISUTILS_H