]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrBase/AliMCAnalysisUtils.h
remove data member with name of currently analyzed file, it causes problems with...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / 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 /* $Id:  $ */
6
7 //_________________________________________________________________________
8 // Class for analysis utils for MC data
9 // stored in stack or event header.
10 // Contains:
11 //  - method to check the origin of a given track/cluster
12 //  - method to obtain the generated jets
13 //
14 //*-- Author: Gustavo Conesa (INFN-LNF)
15
16 // --- ROOT system ---
17 #include <TObject.h>
18 #include <TString.h> 
19 class TList ;
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  private:
31   AliMCAnalysisUtils & operator = (const AliMCAnalysisUtils & ) ;//cpy assignment
32   AliMCAnalysisUtils(const AliMCAnalysisUtils & mcu) ; // cpy ctor
33
34  public:
35         //"Mostly" photon parent types on line 1,
36         //                                                  
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};
45         
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) ;
52         
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) ;
55         
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);
58
59         TList * GetJets(AliCaloTrackReader * const reader) ;
60         
61         void SetTagBit(Int_t &tag, const UInt_t set) const {
62                 // Set bit of type set (mcTypes) in tag
63                 tag |= (1<<set) ; 
64         } 
65         
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 ;    
69                 else return kFALSE ;
70   }
71         
72         void Print(const Option_t * opt)const;
73         
74         void SetDebug(Int_t deb) {fDebug=deb;}
75         Int_t GetDebug() const {return fDebug;} 
76         
77         void SetMCGenerator(TString mcgen) {fMCGenerator=mcgen;}
78         TString GetMCGenerator() const {return fMCGenerator;}   
79
80 private:
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
85         
86         ClassDef(AliMCAnalysisUtils,3)
87 } ;
88
89
90 #endif //ALIMCANALYSISUTILS_H
91
92
93