]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/CaloTrackCorrBase/AliMCAnalysisUtils.h
In case of trigger not set with SelectCollisionCandidates but done inside the reader...
[u/mrichter/AliRoot.git] / PWG / CaloTrackCorrBase / AliMCAnalysisUtils.h
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     */
5
6 //_________________________________________________________________________
7 // Class for analysis utils for MC data
8 // stored in stack or event header.
9 // Contains:
10 //  - method to check the origin of a given track/cluster
11 //  - method to obtain the generated jets
12 //
13 //*-- Author: Gustavo Conesa (INFN-LNF)
14
15 // --- ROOT system ---
16 #include <TObject.h>
17 #include <TString.h> 
18 class TList ;
19 class TVector3;
20
21 //--- AliRoot system ---
22 class AliCaloTrackReader ;
23 class AliStack ;
24
25 class AliMCAnalysisUtils : public TObject {
26         
27  public: 
28   AliMCAnalysisUtils() ; // ctor
29   virtual ~AliMCAnalysisUtils() ;//virtual dtor
30     
31   //--------------------------------------
32   //Enum with tag for origin of particles
33   //--------------------------------------
34   
35   //"Mostly" photon parent types on line 1,
36   //                                                  
37   //then "mostly" electron parent types on line 3, (e.g. electrons can
38   //come from pi0 decay)                              
39   //then charged particles on line 4,                                                                                    
40   //followed by other and unknown on line 5                                                                              
41   enum mcTypes { kMCPhoton,     kMCPrompt,      kMCFragmentation, kMCISR,    
42                  kMCPi0Decay,   kMCEtaDecay,    kMCOtherDecay,    kMCConversion,
43                  kMCElectron,   kMCEFromCFromB, kMCEFromC,        kMCEFromB, kMCZDecay,   kMCWDecay,
44                  kMCMuon,       kMCPion,        kMCPi0,           kMCKaon,   kMCEta,      kMCProton,   
45                  kMCAntiProton, kMCNeutron,     kMCAntiNeutron,
46                  kMCOther,      kMCUnknown,     kMCBadLabel                                                                                         } ;
47   
48   //--------------------------------------
49   // Methods to check origin of clusters
50   //--------------------------------------
51   
52   Int_t   CheckCommonAncestor(const Int_t index1, const Int_t index2, const AliCaloTrackReader* reader, 
53                               Int_t & ancPDG, Int_t & ancStatus, TLorentzVector & momentum, TVector3 & v) ;
54   
55   Int_t   CheckOrigin(const Int_t label, const AliCaloTrackReader * reader, const Int_t input) ;
56   
57   //Check the label of the most significant particle but do checks on the rest of the contributing labels
58   Int_t   CheckOrigin       (const Int_t *label,  const Int_t nlabels, const AliCaloTrackReader * reader, const Int_t input) ;
59   Int_t   CheckOriginInStack(const Int_t *labels, const Int_t nlabels, AliStack * stack)                ; // ESD
60   Int_t   CheckOriginInAOD  (const Int_t *labels, const Int_t nlabels, const TClonesArray* mcparticles) ; // AOD
61   
62   void    CheckOverlapped2GammaDecay(const Int_t *labels, const Int_t nlabels, const Int_t mesonIndex, AliStack * stack, Int_t & tag); // ESD
63   void    CheckOverlapped2GammaDecay(const Int_t *labels, const Int_t nlabels, const Int_t mesonIndex, const TClonesArray* mcparticles, Int_t & tag); // AOD
64   
65   //Check or set the bits produced in the above methods
66   void    SetTagBit(Int_t &tag, const UInt_t set) const {
67     // Set bit of type set (mcTypes) in tag
68     tag |= (1<<set) ; 
69   } 
70   
71   Bool_t  CheckTagBit(const Int_t tag, const UInt_t test) const {
72     // Check if in tag the bit test (mcTypes) is set.
73     if (tag & (1<<test) ) return  kTRUE ;    
74     else return kFALSE ;
75   }
76   
77   //--------------------------------------
78   // Other methods
79   //--------------------------------------
80   
81   // Method to recover MC jets stored in generator
82   TList * GetJets(const AliCaloTrackReader * reader) ;
83   
84   void    SetDebug(Int_t deb)           { fDebug=deb           ; }
85   Int_t   GetDebug()              const { return fDebug        ; }      
86   
87   void    SetMCGenerator(TString mcgen) { fMCGenerator = mcgen ; }
88   TString GetMCGenerator()        const { return fMCGenerator  ; }      
89   
90   void    Print(const Option_t * opt) const;
91   void    PrintMCTag(const Int_t tag) const;
92
93  private:
94   Int_t   fCurrentEvent;        // Current Event
95   Int_t   fDebug;               // Debug level
96   TList * fJetsList;            // List of jets
97   TString fMCGenerator;         // MC geneator used to generate data in simulation
98   
99   AliMCAnalysisUtils & operator = (const AliMCAnalysisUtils & mcu) ; // cpy assignment
100   AliMCAnalysisUtils(              const AliMCAnalysisUtils & mcu) ; // cpy ctor
101   
102   ClassDef(AliMCAnalysisUtils,4)
103
104 } ;
105
106 #endif //ALIMCANALYSISUTILS_H
107
108
109