]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/CaloTrackCorrBase/AliMCAnalysisUtils.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWG / CaloTrackCorrBase / AliMCAnalysisUtils.h
CommitLineData
7cd4e982 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 */
7cd4e982 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 ---
c3ab95b2 16#include <TObject.h>
17#include <TString.h>
7cd4e982 18class TList ;
c4a7d28a 19class TVector3;
7cd4e982 20
21//--- AliRoot system ---
22class AliCaloTrackReader ;
23class AliStack ;
24
25class AliMCAnalysisUtils : public TObject {
26
78219bac 27 public:
28 AliMCAnalysisUtils() ; // ctor
29 virtual ~AliMCAnalysisUtils() ;//virtual dtor
c5693f62 30
840124fe 31 //--------------------------------------
32 //Enum with tag for origin of particles
33 //--------------------------------------
3c75ddf7 34
35 //"Mostly" photon parent types on line 1,
36 //
bbb79e66 37 //then "mostly" electron parent types on line 3, (e.g. electrons can
3c75ddf7 38 //come from pi0 decay)
bbb79e66 39 //then charged particles on line 4,
40 //followed by other and unknown on line 5
c5693f62 41 enum mcTypes { kMCPhoton, kMCPrompt, kMCFragmentation, kMCISR,
3e57baab 42 kMCPi0Decay, kMCEtaDecay, kMCOtherDecay,
43 kMCDecayPairLost, kMCDecayPairInCalo,
44 kMCDecayDalitz,kMCConversion, kMCElectron,
45 kMCEFromCFromB,kMCEFromC, kMCEFromB, kMCZDecay, kMCWDecay,
c5693f62 46 kMCMuon, kMCPion, kMCPi0, kMCKaon, kMCEta, kMCProton,
47 kMCAntiProton, kMCNeutron, kMCAntiNeutron,
4250012f 48 kMCUnknown, kMCBadLabel } ;
3c75ddf7 49
840124fe 50 //--------------------------------------
3c75ddf7 51 // Methods to check origin of clusters
840124fe 52 //--------------------------------------
3c75ddf7 53
8a2dbbff 54 Int_t CheckCommonAncestor(Int_t index1, Int_t index2, const AliCaloTrackReader* reader,
3c75ddf7 55 Int_t & ancPDG, Int_t & ancStatus, TLorentzVector & momentum, TVector3 & v) ;
bbb79e66 56
3e57baab 57 Int_t CheckOrigin(Int_t label, const AliCaloTrackReader * reader, TString calorimeter) ;
bbb79e66 58
3c75ddf7 59 //Check the label of the most significant particle but do checks on the rest of the contributing labels
3e57baab 60 Int_t CheckOrigin (const Int_t *label, Int_t nlabels, const AliCaloTrackReader * reader, TString calorimeter) ;
61 Int_t CheckOriginInStack(const Int_t *labels, Int_t nlabels, AliStack * stack , const TObjArray *arrayCluster) ; // ESD
62 Int_t CheckOriginInAOD (const Int_t *labels, Int_t nlabels, const TClonesArray* mcparticles, const TObjArray *arrayCluster) ; // AOD
3c75ddf7 63
3e57baab 64 void CheckOverlapped2GammaDecay(const Int_t *labels, Int_t nlabels, Int_t mesonIndex, AliStack * stack, Int_t & tag); // ESD
8a2dbbff 65 void CheckOverlapped2GammaDecay(const Int_t *labels, Int_t nlabels, Int_t mesonIndex, const TClonesArray* mcparticles, Int_t & tag); // AOD
840124fe 66
3e57baab 67 void CheckLostDecayPair(const TObjArray *arrayCluster, Int_t iMom, Int_t iParent, AliStack* stack, Int_t & tag); // ESD
68 void CheckLostDecayPair(const TObjArray *arrayCluster, Int_t iMom, Int_t iParent, const TClonesArray* mcparticles, Int_t & tag); // AOD
69
8a2dbbff 70 TLorentzVector GetMother (Int_t label,const AliCaloTrackReader* reader, Bool_t & ok);
71 TLorentzVector GetMother (Int_t label,const AliCaloTrackReader* reader, Int_t & pdg, Int_t & status, Bool_t & ok);
72 TLorentzVector GetMother (Int_t label,const AliCaloTrackReader* reader, Int_t & pdg, Int_t & status, Bool_t & ok, Int_t & momLabel);
73 TLorentzVector GetGrandMother(Int_t label,const AliCaloTrackReader* reader,
914b9fe7 74 Int_t & pdg, Int_t & status, Bool_t & ok, Int_t & grandMomLabel, Int_t & greatMomLabel);
75
8a2dbbff 76 TLorentzVector GetMotherWithPDG(Int_t label, Int_t pdg,const AliCaloTrackReader* reader, Bool_t & ok, Int_t & momLabel);
9036b2a6 77
8a2dbbff 78 void GetMCDecayAsymmetryAngleForPDG(Int_t label, Int_t pdg,const AliCaloTrackReader* reader,
4efb6957 79 Float_t & asy, Float_t & angle, Bool_t & ok);
8e81c2cf 80
8a2dbbff 81 Int_t GetNDaughters(Int_t label,const AliCaloTrackReader* reader, Bool_t & ok);
82 TLorentzVector GetDaughter (Int_t daughter, Int_t label,const AliCaloTrackReader* reader,
36769d30 83 Int_t & pdg, Int_t & status, Bool_t & ok, Int_t & daugLabel);
64be16b4 84
8a2dbbff 85 Int_t GetNOverlaps(const Int_t * label, UInt_t nlabels,
86 Int_t mctag, Int_t mesonLabel,
4914e781 87 AliCaloTrackReader * reader,Int_t *overpdg);
88
840124fe 89 //Check or set the bits produced in the above methods
8a2dbbff 90 void SetTagBit(Int_t &tag, UInt_t set) const {
3c75ddf7 91 // Set bit of type set (mcTypes) in tag
92 tag |= (1<<set) ;
93 }
94
8a2dbbff 95 Bool_t CheckTagBit(Int_t tag, UInt_t test) const {
3c75ddf7 96 // Check if in tag the bit test (mcTypes) is set.
97 if (tag & (1<<test) ) return kTRUE ;
98 else return kFALSE ;
f8006433 99 }
3c75ddf7 100
840124fe 101 //--------------------------------------
102 // Other methods
103 //--------------------------------------
2644ead9 104
840124fe 105 // Method to recover MC jets stored in generator
c5693f62 106 TList * GetJets(const AliCaloTrackReader * reader) ;
3c75ddf7 107
108 void SetDebug(Int_t deb) { fDebug=deb ; }
109 Int_t GetDebug() const { return fDebug ; }
110
111 void SetMCGenerator(TString mcgen) { fMCGenerator = mcgen ; }
112 TString GetMCGenerator() const { return fMCGenerator ; }
840124fe 113
114 void Print(const Option_t * opt) const;
8a2dbbff 115 void PrintMCTag(Int_t tag) const;
bbb79e66 116
3c75ddf7 117 private:
118 Int_t fCurrentEvent; // Current Event
119 Int_t fDebug; // Debug level
120 TList * fJetsList; // List of jets
121 TString fMCGenerator; // MC geneator used to generate data in simulation
122
bbb79e66 123 AliMCAnalysisUtils & operator = (const AliMCAnalysisUtils & mcu) ; // cpy assignment
124 AliMCAnalysisUtils( const AliMCAnalysisUtils & mcu) ; // cpy ctor
c5693f62 125
4914e781 126 ClassDef(AliMCAnalysisUtils,5)
7cd4e982 127
3c75ddf7 128} ;
7cd4e982 129
130#endif //ALIMCANALYSISUTILS_H
131
132
133