]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/AliAnalysisEtSelectorEmcal.cxx
Added analysis config macros for L* analysis in p-Pb (Sarita)
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEtSelectorEmcal.cxx
CommitLineData
69fe2599 1//_________________________________________________________________________
2// Utility Class for transverse energy studies
3// Selection class for EMCAL
4//
5//*-- Authors: Oystein Djuvsland (Bergen)
6//_________________________________________________________________________
7
8
9#include "AliAnalysisEtSelectorEmcal.h"
10#include "AliAnalysisEtCuts.h"
f20da103 11#include "AliEMCALTrack.h"
69fe2599 12#include "TParticle.h"
69fe2599 13
7f03b597 14AliAnalysisEtSelectorEmcal::AliAnalysisEtSelectorEmcal(AliAnalysisEtCuts* cuts):AliAnalysisEtSelector(cuts)
69fe2599 15{
16
c31562f7 17}
18AliAnalysisEtSelectorEmcal::AliAnalysisEtSelectorEmcal():AliAnalysisEtSelector()
19{
69fe2599 20}
21
7f03b597 22AliAnalysisEtSelectorEmcal::~AliAnalysisEtSelectorEmcal()
69fe2599 23{
24
25}
26
27void AliAnalysisEtSelectorEmcal::Init()
28{
29 AliAnalysisEtSelector::Init();
30}
31
32Int_t AliAnalysisEtSelectorEmcal::Init(const AliESDEvent* event)
f20da103 33{ // Init
34
69fe2599 35 AliAnalysisEtSelector::Init(event);
36 Printf("Initializing selector for run: %d", event->GetRunNumber());
37 fInitialized = kTRUE;
38 return 0;
39}
40
41TRefArray* AliAnalysisEtSelectorEmcal::GetClusters()
f20da103 42{ // Get clusters
43
44 if(!fClusterArray) fClusterArray = new TRefArray;
45
46 if(fClusterArray)
47 {
48 fEvent->GetEMCALClusters(fClusterArray);
49 }
50 else
51 {
52 Printf("Could not initialize cluster array");
53 }
54 return fClusterArray;
69fe2599 55}
56
86e7d5db 57Bool_t AliAnalysisEtSelectorEmcal::PassMinEnergyCut(const AliESDCaloCluster& cl) const
69fe2599 58{
cfe23ff0 59 Float_t pos[3];
60 cl.GetPosition(pos);
61 TVector3 cp(pos);
62 return TMath::Sin(cp.Theta())*cl.E() > fCuts->GetReconstructedEmcalClusterEnergyCut();
69fe2599 63}
64
86e7d5db 65Bool_t AliAnalysisEtSelectorEmcal::PassMinEnergyCut(const TParticle& p) const
69fe2599 66{
cfe23ff0 67 return TMath::Sin(p.Theta())*p.Energy() > fCuts->GetReconstructedEmcalClusterEnergyCut();
69fe2599 68}
69
86e7d5db 70Bool_t AliAnalysisEtSelectorEmcal::PassDistanceToBadChannelCut(const AliESDCaloCluster& ) const
69fe2599 71{
7f03b597 72 return kTRUE;
69fe2599 73}
74
f20da103 75Bool_t AliAnalysisEtSelectorEmcal::PassTrackMatchingCut(const AliESDCaloCluster& cluster) const
69fe2599 76{
f20da103 77
fe4603e7 78 Int_t nTracksMatched = cluster.GetNTracksMatched();
79 if(nTracksMatched == 0){
80 return kTRUE;
81 }
82
83 Int_t trackMatchedIndex = cluster.GetTrackMatchedIndex();
84 if(trackMatchedIndex < 0){
85 return kTRUE;
86 }
ea3ce170 87 AliVParticle *track = fEvent->GetTrack(trackMatchedIndex);
88 if(track->Pt()<0.5) return kTRUE;//Track matches below about 500 MeV are mostly random. It takes ~460 MeV to reach the EMCal
89
90 //Float_t recoE = cluster.E();
fe4603e7 91 //Float_t pos[3];
92
93// //cluster.GetPosition(pos);
94// Int_t trackMatchIdx = cluster.GetTrackMatchedIndex();
95// //Double_t distance = 9999.0;
96// if(trackMatchIdx>-1)
97// {
98// return kTRUE;
99// //distance = CalcTrackClusterDistance(pos, &trackMatchIdx);
100// }
101
fe4603e7 102
103 return kFALSE;
104 //return distance > fCuts->GetEmcalTrackDistanceCut();
69fe2599 105}
106
43dd5a38 107Bool_t AliAnalysisEtSelectorEmcal::CutGeometricalAcceptance(const TParticle& part)
69fe2599 108{
43dd5a38 109 float myphi = part.Phi();
110 myphi = AliAnalysisEtSelector::ShiftAngle(myphi);
f20da103 111 return TMath::Abs(part.Eta()) < fCuts->GetGeometryEmcalEtaAccCut()
43dd5a38 112 && myphi < fCuts->GetGeometryEmcalPhiAccMaxCut()*TMath::Pi()/180.
113 && myphi > fCuts->GetGeometryEmcalPhiAccMinCut()*TMath::Pi()/180.;
69fe2599 114}
115
43dd5a38 116Bool_t AliAnalysisEtSelectorEmcal::CutGeometricalAcceptance(const AliVTrack& part)
69fe2599 117{
43dd5a38 118 float myphi = part.Phi();
119 myphi = AliAnalysisEtSelector::ShiftAngle(myphi);
120 return TMath::Abs(part.Eta()) < fCuts->GetGeometryEmcalEtaAccCut()
121 && myphi < fCuts->GetGeometryEmcalPhiAccMaxCut()*TMath::Pi()/180.
122 && myphi > fCuts->GetGeometryEmcalPhiAccMinCut()*TMath::Pi()/180.;
69fe2599 123}
124
43dd5a38 125Bool_t AliAnalysisEtSelectorEmcal::CutGeometricalAcceptance(const AliESDCaloCluster& cluster)
31c813d5 126{
127 Float_t pos[3];
128 cluster.GetPosition(pos);
129 TVector3 cp(pos);
43dd5a38 130 float myphi = cp.Phi();
131 myphi = AliAnalysisEtSelector::ShiftAngle(myphi);
31c813d5 132 return TMath::Abs(cp.Eta()) < fCuts->GetGeometryEmcalEtaAccCut()
43dd5a38 133 && myphi < fCuts->GetGeometryEmcalPhiAccMaxCut()*TMath::Pi()/180.
134 && myphi > fCuts->GetGeometryEmcalPhiAccMinCut()*TMath::Pi()/180.;
31c813d5 135}
136
69fe2599 137
f20da103 138Double_t
139AliAnalysisEtSelectorEmcal::CalcTrackClusterDistance(const Float_t clsPos[3],Int_t *trkMatchId) const
140{ // calculate distance between cluster and closest track
141
142 Double_t trkPos[3] = {0,0,0};
143
144 Int_t bestTrkMatchId = -1;
145 Double_t distance = 9999; // init to a big number
146
147 Double_t dist = 0;
148 Double_t distX = 0, distY = 0, distZ = 0;
149
150 for (Int_t iTrack = 0; iTrack < fEvent->GetNumberOfTracks(); iTrack++) {
151 AliESDtrack *track = static_cast<AliESDtrack*>( fEvent->GetTrack(iTrack) );
152 if (!track) {
153 AliError(Form("ERROR: Could not get track %d", iTrack));
154 continue;
155 }
156
157 // check for approx. eta and phi range before we propagate..
158 // TBD
159
160 AliEMCALTrack emctrack(*track);
161 if (!emctrack.PropagateToGlobal(clsPos[0],clsPos[1],clsPos[2],0.,0.) ) {
162 continue;
163 }
164 emctrack.GetXYZ(trkPos);
165
166 distX = clsPos[0]-trkPos[0];
167 distY = clsPos[1]-trkPos[1];
168 distZ = clsPos[2]-trkPos[2];
169 dist = TMath::Sqrt(distX*distX + distY*distY + distZ*distZ);
170
171 if (dist < distance) {
172 distance = dist;
173 bestTrkMatchId = iTrack;
174 }
175 } // iTrack
176
177 // printf("CalcTrackClusterDistance: bestTrkMatch %d origTrkMatch %d distance %f\n", bestTrkMatchId, *trkMatchId, distance);
178 *trkMatchId = bestTrkMatchId;
179 return distance;
180}
181
69fe2599 182
183
184
185