]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AOD/AliAODPWG4Particle.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPWG4Particle.h
CommitLineData
21a4b1c0 1#ifndef ALIAODPWG4PARTICLE_H
2#define ALIAODPWG4PARTICLE_H
3/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id: AliAODPWG4Particle.h $ */
7
8//-------------------------------------------------------------------------
bfa9c596 9// AOD objects class in use in the CaloTrackCorrelations
10// analysis pacackge ($ALICE_ROOT/PWGGA/CaloTrackCorrelations)
11//
12// Author: Gustavo Conesa Balbastre - CNRS-LPSC-Grenoble
21a4b1c0 13//-------------------------------------------------------------------------
14
15//-- ROOT system --
16#include <TLorentzVector.h>
17class TString;
18
19//-- Analysis system
20#include "AliVParticle.h"
21
22class AliAODPWG4Particle : public AliVParticle {
23
24 public:
667496a9 25
21a4b1c0 26 AliAODPWG4Particle();
27 AliAODPWG4Particle(Double_t px, Double_t py, Double_t pz, Double_t e);
28 AliAODPWG4Particle(TLorentzVector & p);
29
30 virtual ~AliAODPWG4Particle();
31 virtual void Clear(const Option_t* /*opt*/);
32
bfa9c596 33 AliAODPWG4Particle ( const AliAODPWG4Particle& photon);
34 AliAODPWG4Particle & operator=(const AliAODPWG4Particle& photon);
21a4b1c0 35
bfa9c596 36 // Main methods to recover kinematics or PID
37 TLorentzVector * Momentum() const { return fMomentum ; }
38 virtual void SetMomentum(TLorentzVector *lv) { fMomentum = lv ; }
39
40 Bool_t IsPIDOK(const Int_t ipid, const Int_t pdgwanted) const;
41 Double_t GetPairMass(AliAODPWG4Particle * p)const{ return (*(p->fMomentum)+*fMomentum).M(); }
42
21a4b1c0 43 // AliVParticle methods
44 virtual Double_t Px() const { return fMomentum->Px(); }
45 virtual Double_t Py() const { return fMomentum->Py(); }
46 virtual Double_t Pz() const { return fMomentum->Pz(); }
47 virtual Double_t Pt() const { return fMomentum->Pt(); }
48 virtual Double_t P() const { return fMomentum->P(); }
49 virtual Bool_t PxPyPz(Double_t p[3]) const { p[0] = Px(); p[1] = Py(); p[2] = Pz(); return kTRUE; }
50 virtual Double_t OneOverPt() const { return 1. / fMomentum->Pt(); }
51 virtual Double_t Phi() const;
52 virtual Double_t Theta() const { return fMomentum->Theta(); }
53 virtual Double_t E() const { return fMomentum->E(); }
54 virtual Double_t M() const { return fMomentum->M(); }
55 virtual Double_t Eta() const { return fMomentum->Eta(); }
56 virtual Double_t Y() const { return fMomentum->Rapidity();}
bfa9c596 57 virtual Double_t Xv() const { return -999.;} // put reasonable values here
58 virtual Double_t Yv() const { return -999.;} //
59 virtual Double_t Zv() const { return -999.;} //
21a4b1c0 60 virtual Bool_t XvYvZv(Double_t x[3]) const { x[0] = Xv(); x[1] = Yv(); x[2] = Zv(); return kTRUE; }
61 virtual void Print(Option_t* /*option*/) const;
62
63 //
64 //Dummy
65 virtual Short_t Charge() const { return 0;}
66 virtual const Double_t* PID() const { return NULL;}
bfa9c596 67 Int_t PdgCode() const {return 0;}
68 //
69
21a4b1c0 70 //
bfa9c596 71 // Specific getters
72 virtual Int_t GetIdentifiedParticleType() const { return fPdg ; }
73
74 virtual Int_t GetLabel() const { return fLabel ; }
75 virtual Int_t GetCaloLabel (Int_t i) const { return fCaloLabel[i] ; }
76 virtual Int_t GetTrackLabel(Int_t i) const { return fTrackLabel[i]; }
bfa9c596 77 virtual UInt_t GetDetectorTag() const { return fDetectorTag ; }
78 virtual Bool_t GetDispBit() const { return fDisp ; }
79 virtual Bool_t GetTOFBit() const { return fTof ; }
80 virtual Bool_t GetChargedBit() const { return fCharged ; }
81 virtual Int_t DistToBad() const { return fBadDist ; }
82 virtual Int_t GetInputFileIndex() const { return fInputFileIndex ; }
83 virtual Int_t GetFiducialArea() const { return fFidArea ; }
84
85 // Tags
86 virtual Int_t GetTag() const { return fTag ; }
87 virtual Bool_t IsTagged() const { return fTagged ; }
88 virtual Int_t DecayTag() const { return fDecayTag ; }
89 virtual Bool_t IsIsolated() const { return fIsolated ; }
90 virtual Bool_t IsLeadingParticle() const { return fLeadingParticle ; }
91
92 // Calorimeter specific param
93 virtual Int_t GetNLM() const { return fNLM ; }
94 virtual Float_t GetM02() const { return fM02 ; }
667496a9 95 virtual Float_t GetTime() const { return fTime ; }
96 virtual Int_t GetNCells() const { return fNCells ; }
97 virtual Int_t GetSModNumber() const { return fSuperModule ; }
98
bfa9c596 99 //
100 // Specific setters
101 virtual void SetIdentifiedParticleType(Int_t pdg) { fPdg = pdg ; }
102
21a4b1c0 103 virtual void SetLabel(Int_t l) { fLabel = l ; }
104 virtual void SetCaloLabel (Int_t a, Int_t b) { fCaloLabel [0] = a; fCaloLabel [1] = b ; }
105 virtual void SetTrackLabel(Int_t a, Int_t b) { fTrackLabel[0] = a; fTrackLabel[1] = b ; }
106 virtual void SetTrackLabel(Int_t a, Int_t b, Int_t c, Int_t d)
107 { fTrackLabel[0] = a; fTrackLabel[1] = b ; fTrackLabel[2] = c; fTrackLabel[3] = d; }
108
bfa9c596 109 virtual void SetDetectorTag(UInt_t d) { fDetectorTag = d ; }
110 virtual void SetDispBit(Bool_t disp) { fDisp = disp ; }
111 virtual void SetTOFBit(Bool_t tof) { fTof = tof ; }
112 virtual void SetChargedBit(Bool_t ch) { fCharged = ch ; }
113 virtual void SetDistToBad(Int_t dist) { fBadDist = dist ; }
114 virtual void SetInputFileIndex(Int_t i){ fInputFileIndex = i ; }
115 virtual void SetFiducialArea(Int_t a) { fFidArea = a ; }
116
117 // Tags
118 virtual void SetTag(Int_t tag) { fTag = tag ; }
119 virtual void SetTagged(Bool_t tag) { fTagged = tag ; }
120 virtual void SetDecayTag(Int_t tag) { fDecayTag = tag ; }
121 virtual void SetIsolated(Bool_t iso) { fIsolated = iso ; }
122 virtual void SetLeadingParticle(Bool_t l) { fLeadingParticle = l ; }
21a4b1c0 123
bfa9c596 124 // Calorimeter specific param
667496a9 125 virtual void SetNLM (Int_t nlm) { fNLM = nlm ; }
126 virtual void SetM02 (Float_t m02) { fM02 = m02 ; }
127 virtual void SetTime (Float_t tim) { fTime = tim ; }
128 virtual void SetNCells(Int_t nce) { fNCells = nce ; }
129 virtual void SetSModNumber(Int_t sm) { fSuperModule = sm ; }
bfa9c596 130
131 //
132 // BTagging
133 // enumerated type for various b-tags of electrons
134 enum btagTypes {kDVMTag0, kDVMTag1, kDVMTag2, kTransverseIPTag, kUnknownTag};
135
136 virtual void SetBtag(Int_t tag) { fBtag = tag ; }
137 virtual Int_t GetBtag() const { return fBtag ; }
138
139 void SetBTagBit(Int_t &tag, const UInt_t set) const {
140 // Set bit of type set (btagTypes) in tag
141 tag |= (1<<set) ;
142 }
143
144 Bool_t CheckBTagBit(const Int_t tag, const UInt_t test) const {
145 // Check if in fBtag the bit test (btagTypes) is set.
146 if (tag & (1<<test) ) return kTRUE ;
147 else return kFALSE ;
148 }
21a4b1c0 149
150 private:
667496a9 151
bfa9c596 152 TLorentzVector* fMomentum; // Photon 4-momentum vector
21a4b1c0 153 Int_t fPdg ; // type of identified particle, same code as PDG, but this is not a MonteCarlo particle
154 Int_t fTag ; // tag of particle (decay, fragment, prompt photon), MC
21a4b1c0 155 Int_t fLabel ; // MC label
156 Int_t fCaloLabel[2]; // CaloCluster index, 1 for photons, 2 for pi0.
157 Int_t fTrackLabel[4]; // Track lable, 1 for pions, 2 for conversion photons
bfa9c596 158 UInt_t fDetectorTag ; // Detector where particle was measured, integer
667496a9 159
160 // Calo specific
21a4b1c0 161 Int_t fBadDist ; // Distance to bad module in module units
bfa9c596 162 UInt_t fNLM ; // Store the number of local maxima
163 Float_t fM02 ; // Store the main axis of the calorimeter shower shape
667496a9 164 Float_t fTime; // Store the time of cluster or track, nano seconds
165 Int_t fNCells; // Store the number of cells in cluster
166 Int_t fSuperModule; // Store the super-module number of cluster
167
168 // Tags
169 Int_t fDecayTag; // Tag the photon as decay from, pi0, eta, pi0 side band, eta side band
bfa9c596 170 Bool_t fIsolated ; // Particle is isolated or not
171 Bool_t fLeadingParticle ; //Particle is leading or not
172
667496a9 173 // PID bits
174 Bool_t fDisp ; // Dispersion bit
175 Bool_t fTof ; // TOF bit
176 Bool_t fCharged ; // Charged bit
177
bfa9c596 178 // Not in use currently ...
179 Bool_t fTagged ; // If photon tagged (pi0 decay), not used anymore, replace by fDecayTag
21a4b1c0 180 Int_t fFidArea ; // Type of fiducial area hit by this photon
bfa9c596 181 Int_t fInputFileIndex;// 0, standard input, 1 first input added. Only possible one for now, not really used.
182 Int_t fBtag; // tag particle from B.
183
184
667496a9 185 ClassDef(AliAODPWG4Particle, 6);
21a4b1c0 186};
187
188inline Double_t AliAODPWG4Particle::Phi() const
189{
190 // Return phi
191 Double_t phi = fMomentum->Phi();
192 if (phi < 0.) phi += TMath::TwoPi();
193 return phi;
194}
195
196#endif //ALIAODPWG4PARTICLE_H