1 // $Id: AliAnalysisTaskCLQA.cxx 60694 2013-02-04 15:35:56Z morsch $
8 #include <TClonesArray.h>
9 #include <TDirectory.h>
15 #include <TLorentzVector.h>
20 #include "AliAODEvent.h"
21 #include "AliAnalysisManager.h"
22 #include "AliAnalysisTaskCLQA.h"
23 #include "AliAnalysisUtils.h"
24 #include "AliCentrality.h"
25 #include "AliEMCALGeoParams.h"
26 #include "AliEMCALGeometry.h"
27 #include "AliESDEvent.h"
28 #include "AliEmcalJet.h"
29 #include "AliExternalTrackParam.h"
30 #include "AliInputEventHandler.h"
32 #include "AliPicoTrack.h"
33 #include "AliTrackerBase.h"
34 #include "AliVCluster.h"
35 #include "AliVEventHandler.h"
36 #include "AliVParticle.h"
37 #include "AliVTrack.h"
39 ClassImp(AliAnalysisTaskCLQA)
41 //________________________________________________________________________
42 AliAnalysisTaskCLQA::AliAnalysisTaskCLQA() :
43 AliAnalysisTaskEmcalJet("AliAnalysisTaskCLQA", kTRUE),
45 fCumPtMin(0.3), fCumPtMax(5.0), fCumEtaMin(-1.0), fCumEtaMax(1.0), fCumMmin(15),
46 fNtupCum(0), fNtupCumInfo(0)
48 // Default constructor.
51 //________________________________________________________________________
52 AliAnalysisTaskCLQA::AliAnalysisTaskCLQA(const char *name) :
53 AliAnalysisTaskEmcalJet(name, kTRUE),
55 fCumPtMin(0.3), fCumPtMax(5.0), fCumEtaMin(-1.0), fCumEtaMax(1.0), fCumMmin(15),
56 fNtupCum(0), fNtupCumInfo(0)
58 // Standard constructor.
61 //________________________________________________________________________
62 AliAnalysisTaskCLQA::~AliAnalysisTaskCLQA()
67 //________________________________________________________________________
68 Bool_t AliAnalysisTaskCLQA::FillHistograms()
75 //________________________________________________________________________
76 Bool_t AliAnalysisTaskCLQA::RetrieveEventObjects()
78 // Retrieve event objects.
80 if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
86 //________________________________________________________________________
87 Bool_t AliAnalysisTaskCLQA::Run()
89 // Run various functions.
91 RunCumulants(fCumMmin,fCumPtMin,fCumPtMax,fCumEtaMin,fCumEtaMax);
96 //________________________________________________________________________
97 void AliAnalysisTaskCLQA::RunCumulants(Double_t Mmin, Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax)
99 // Run cumulant analysis.
107 const Int_t ntracks = fTracks->GetEntries();
108 Int_t Mall=0,M=0,Mall2=0;
109 Double_t ptmaxall=0,ptsumall=0,pt2sumall=0,ptsumall2=0;
110 Double_t tsa00=0,tsa10=0,tsa11=0;
111 Double_t Q2r=0,Q2i=0;
112 Double_t Q4r=0,Q4i=0;
113 Double_t mpt=0,mpt2=0,ptmaxq=0;
114 Double_t ts00=0,ts10=0,ts11=0;
115 for (Int_t i =0; i<ntracks; ++i) {
116 AliVTrack *track = dynamic_cast<AliVTrack*>(fTracks->At(i));
119 Double_t eta = track->Eta();
120 if ((eta<etamin) || (eta>etamax))
122 Double_t pt = track->Pt();
131 Double_t px = track->Px();
132 Double_t py = track->Py();
137 if ((pt<ptmin) || (pt>ptmax))
141 Double_t phi = track->Phi();
148 Q2r += TMath::Cos(2*phi);
149 Q2i += TMath::Sin(2*phi);
150 Q4r += TMath::Cos(4*phi);
151 Q4i += TMath::Sin(4*phi);
157 Double_t Q2abs = Q2r*Q2r+Q2i*Q2i;
158 Double_t Q4abs = Q4r*Q4r+Q4i*Q4i;
159 Double_t Q42re = Q4r*Q2r*Q2r-Q4r*Q2i*Q2i+2*Q4i*Q2r*Q2i;
162 Double_t tsax = (tsa00+tsa11)*(tsa00+tsa11)-4*(tsa00*tsa11-tsa10*tsa10);
164 Double_t l1 = 0.5*(tsa00+tsa11+TMath::Sqrt(tsax))/ptsumall;
165 Double_t l2 = 0.5*(tsa00+tsa11-TMath::Sqrt(tsax))/ptsumall;
166 tsall = 2*l2/(l1+l2);
170 Double_t tsx = (ts00+ts11)*(ts00+ts11)-4*(ts00*ts11-ts10*ts10);
172 Double_t l1 = 0.5*(ts00+ts11+TMath::Sqrt(tsx))/ptsumall;
173 Double_t l2 = 0.5*(ts00+ts11-TMath::Sqrt(tsx))/ptsumall;
177 AliAnalysisUtils anau;
178 AliVEvent *event = InputEvent();
179 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
181 fNtupCumInfo->fTrig = ((AliInputEventHandler*)(am->GetInputEventHandler()))->IsEventSelected();
182 fNtupCumInfo->fRun = event->GetRunNumber();
183 fNtupCumInfo->fVz = event->GetPrimaryVertex()->GetZ();
184 fNtupCumInfo->fIsFEC = anau.IsFirstEventInChunk(event);
185 fNtupCumInfo->fIsVSel = anau.IsVertexSelected2013pA(event);
186 fNtupCumInfo->fIsP = event->IsPileupFromSPD(3/*minContributors*/,
192 fNtupCumInfo->fMall = Mall;
193 fNtupCumInfo->fMall2 = Mall2;
194 fNtupCumInfo->fPtMaxall = ptmaxall;
195 fNtupCumInfo->fMPtall = ptsumall/Mall;
196 fNtupCumInfo->fMPt2all = pt2sumall/Mall;
198 fNtupCumInfo->fMPtall2 = ptsumall2/Mall2;
200 fNtupCumInfo->fMPtall2 = -1;
201 fNtupCumInfo->fTSall = tsall;
202 fNtupCumInfo->fM = M;
203 fNtupCumInfo->fQ2abs = Q2abs;
204 fNtupCumInfo->fQ4abs = Q4abs;
205 fNtupCumInfo->fQ42re = Q42re;
206 fNtupCumInfo->fPtMax = ptmaxq;
207 fNtupCumInfo->fMPt = mpt/M;
208 fNtupCumInfo->fMPt2 = mpt2/M;
209 fNtupCumInfo->fTS = ts;
210 AliVVZERO *vzero = InputEvent()->GetVZEROData();
211 fNtupCumInfo->fMV0M = vzero->GetMTotV0A()+vzero->GetMTotV0C();
212 AliCentrality *cent = InputEvent()->GetCentrality();
213 fNtupCumInfo->fCl1 = cent->GetCentralityPercentile("CL1");
214 fNtupCumInfo->fV0M = cent->GetCentralityPercentile("V0M");
215 fNtupCumInfo->fV0MEq = cent->GetCentralityPercentile("V0MEq");
216 fNtupCumInfo->fV0A = cent->GetCentralityPercentile("V0A");
217 fNtupCumInfo->fV0AEq = cent->GetCentralityPercentile("V0AEq");
218 fNtupCumInfo->fZNA = cent->GetCentralityPercentile("ZNA");
222 //________________________________________________________________________
223 void AliAnalysisTaskCLQA::SetCumParams(Double_t Mmin, Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax)
225 // Set parameters for cumulants.
234 //________________________________________________________________________
235 void AliAnalysisTaskCLQA::UserCreateOutputObjects()
239 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
242 fNtupCum = new TTree("NtupCum", "Ntuple for cumulant analysis");
244 fNtupCum->SetDirectory(0);
246 TFile *f = OpenFile(1);
248 f->SetCompressionLevel(2);
249 fNtupCum->SetDirectory(f);
250 fNtupCum->SetAutoFlush(-4*1024*1024);
251 fNtupCum->SetAutoSave(0);
254 fNtupCumInfo = new AliNtupCumInfo;
255 fNtupCum->Branch("cumulants", &fNtupCumInfo, 32*1024, 99);
256 fOutput->Add(fNtupCum);
259 PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram