10 #include "TStopwatch.h"
12 #include "THashList.h"
14 #include "AliAnalysisTask.h"
15 #include "AliAnalysisManager.h"
16 #include "AliTracker.h"
17 #include "AliESDEvent.h"
18 #include "AliESDInputHandler.h"
19 #include "AliESDpid.h"
21 #include "AliMCEvent.h"
22 #include "AliMCEventHandler.h"
23 #include "AliESDtrackCuts.h"
24 #include "AliKineTrackCuts.h"
25 #include "AliMCParticle.h"
26 #include "AliESDVZERO.h"
27 #include "AliAnalysisTaskNetParticle.h"
28 #include "AliGenEventHeader.h"
29 #include "AliCentrality.h"
30 #include "AliAODEvent.h"
31 #include "AliAODInputHandler.h"
35 // Task for NetParticle checks
36 // Author: Jochen Thaeder <jochen@thaeder.de>
38 ClassImp(AliAnalysisTaskNetParticle)
41 * ---------------------------------------------------------------------------------
42 * Constructor / Destructor
43 * ---------------------------------------------------------------------------------
46 //________________________________________________________________________
47 AliAnalysisTaskNetParticle::AliAnalysisTaskNetParticle(const char *name) :
48 AliAnalysisTaskSE(name),
49 fHelper(new AliAnalysisNetParticleHelper),
63 fESDTrackCutsBase(new AliESDtrackCuts),
65 fESDTrackCutsBkg(NULL),
66 fESDTrackCutsEff(NULL),
82 fUseQATHnSparse(kFALSE),
85 fPtRange(new Float_t[2]),
86 fPtRangeEff(new Float_t[2]),
88 fAODtrackCutBit(1024){
91 AliLog::SetClassDebugLevel("AliAnalysisTaskNetParticle",10);
99 // -------------------------------------------------
100 DefineOutput(1, TList::Class());
101 DefineOutput(2, TList::Class());
102 DefineOutput(3, TList::Class());
103 DefineOutput(4, TList::Class());
104 DefineOutput(5, TList::Class());
107 //________________________________________________________________________
108 AliAnalysisTaskNetParticle::~AliAnalysisTaskNetParticle() {
111 if (fPtRange) delete[] fPtRange;
112 if (fPtRangeEff) delete[] fPtRangeEff;
114 if (fESDTrackCutsBase) delete fESDTrackCutsBase;
115 if (fESDTrackCuts) delete fESDTrackCuts;
116 if (fESDTrackCutsBkg) delete fESDTrackCutsBkg;
117 if (fESDTrackCutsEff) delete fESDTrackCutsEff;
119 if (fHelper) delete fHelper;
120 if (fEffCont) delete fEffCont;
121 if (fDCA) delete fDCA;
122 if (fDist) delete fDist;
126 * ---------------------------------------------------------------------------------
128 * ---------------------------------------------------------------------------------
131 //________________________________________________________________________
132 void AliAnalysisTaskNetParticle::UserCreateOutputObjects() {
135 //Have to do this for grid analysis????
138 Bool_t oldStatus = TH1::AddDirectoryStatus();
139 TH1::AddDirectory(kFALSE);
141 fOutList = new TList;
142 fOutList->SetName(GetName()) ;
143 fOutList->SetOwner(kTRUE);
145 fOutListEff = new TList;
146 fOutListEff->SetName(Form("%s_eff",GetName()));
147 fOutListEff->SetOwner(kTRUE) ;
149 fOutListCont = new TList;
150 fOutListCont->SetName(Form("%s_cont",GetName()));
151 fOutListCont->SetOwner(kTRUE) ;
153 fOutListDCA = new TList;
154 fOutListDCA->SetName(Form("%s_dca",GetName()));
155 fOutListDCA->SetOwner(kTRUE) ;
157 fOutListQA = new TList;
158 fOutListQA->SetName(Form("%s_qa",GetName()));
159 fOutListQA->SetOwner(kTRUE) ;
161 // ------------------------------------------------------------------
162 // -- Get event / trigger statistics histograms
163 // ------------------------------------------------------------------
165 fOutList->Add(fHelper->GetHEventStat0());
166 fOutList->Add(fHelper->GetHEventStat1());
167 fOutList->Add(fHelper->GetHTriggerStat());
168 fOutList->Add(fHelper->GetHCentralityStat());
170 // ------------------------------------------------------------------
171 // -- Add histograms from distribution class
172 // ------------------------------------------------------------------
173 if (fModeDistCreation == 1)
174 fDist->CreateHistograms(fOutList);
176 // ------------------------------------------------------------------
177 // -- Add histograms from efficiency/contamination class
178 // ------------------------------------------------------------------
179 if ((fIsAOD||fIsMC) && fModeEffCreation == 1) {
180 fOutListEff->Add(fEffCont->GetHnEff());
181 fOutListCont->Add(fEffCont->GetHnCont());
184 // ------------------------------------------------------------------
185 // -- Add histograms from DCA class
186 // ------------------------------------------------------------------
187 if (fModeDCACreation == 1)
188 fOutListDCA->Add(fDCA->GetHnDCA());
190 // ------------------------------------------------------------------
191 // -- Add Multiplicity Correlations
192 // ------------------------------------------------------------------
194 fOutList->Add(new TH2F("fHMultCorrTPCref0", "Centrality vs Multiplicity (TPCref);Centrality;Multiplicity (TPCref)",
195 24, -0.5, 11.49, 10001, 0.5, 10000.49));
196 fOutList->Add(new TH2F("fHMultCorrTracks0", "Centrality vs Multiplicity (Tracks);Centrality;Multiplicity (Tracks)",
197 24, -0.5, 11.49, 10001, 0.5, 10000.49));
198 fOutList->Add(new TH2F("fHMultCorrESDTracks0", "Centrality vs Multiplicity (ESDTracks);Centrality;Multiplicity (ESDTracks)",
199 24, -0.5, 11.49, 10001, 0.5, 10000.49));
201 fOutList->Add(new TH2F("fHMultCorrTPCref1", "Centrality vs Multiplicity (TPCref);Centrality;Multiplicity (TPCref)",
202 101, -0.5, 100.49, 10001, 0.5, 10000.49));
203 fOutList->Add(new TH2F("fHMultCorrTracks1", "Centrality vs Multiplicity (Tracks);Centrality;Multiplicity (Tracks)",
204 101, -0.5, 100.49, 10001, 0.5, 10000.49));
205 fOutList->Add(new TH2F("fHMultCorrESDTracks1", "Centrality vs Multiplicity (ESDTracks);Centrality;Multiplicity (ESDTracks)",
206 101, -0.5, 100.49, 10001, 0.5, 10000.49));
208 // ------------------------------------------------------------------
209 // -- Create THnSparseF - QA
210 // ------------------------------------------------------------------
212 Double_t dCent[2] = {-0.5, 8.5};
215 Double_t dEta[2] = {-0.9, 0.9}; // -> 37 bins
216 Int_t iEta = Int_t((dEta[1]-dEta[0]) / 0.075) +1 ;
218 Double_t dRap[2] = {-0.5, 0.5};
219 Int_t iRap = Int_t((dRap[1]-dRap[0]) / 0.075) +1 ;
221 Double_t dPhi[2] = {0.0, TMath::TwoPi()};
224 Double_t dPt[2] = {0.1, 3.0};
225 Int_t iPt = Int_t((dPt[1]-dPt[0]) / 0.075);
227 Double_t dSign[2] = {-1.5, 1.5};
230 // cent:isAccepted: pInner: pt: sign:tpcSignal:nSigmaTPC:nSigmaTOF: eta: phi: y: dcar: dcaz: nSigmaCdd: nSigmaCzz
231 Int_t bin[15] = { iCent, 2 , iPt, iPt, iSign, 500, 50 , 50 , iEta, iPhi, iRap, 50 , 50 , 50 , 50 };
232 Double_t min[15] = {dCent[0], -0.5, dPt[0], dPt[0], dSign[0], 30, -5.0, -5.0, dEta[0], dPhi[0], dRap[0], -10., -10., -10., -10.};
233 Double_t max[15] = {dCent[1], 1.5, dPt[1], dPt[1], dSign[1], 500, 5.0, 5.0, dEta[1], dPhi[1], dRap[1], 10., 10., 10., 10.};
235 if (fUseQATHnSparse) {
236 fOutListQA->Add(new THnSparseF("fHnQA", "cent:isAccepted:pInner:pt:sign:tpcSignal:nSigmaTPC:nSigmaTOF:eta:phi:u:dcar:dcaz:nSigmaCdd:nSigmaCzz",
239 fHnQA = static_cast<THnSparseF*>(fOutListQA->Last());
242 fHnQA->GetAxis(0)->SetTitle("centrality");
243 fHnQA->GetAxis(1)->SetTitle("isAccepted");
244 fHnQA->GetAxis(2)->SetTitle("#it{p}_{Inner} (GeV/#it{c})");
245 fHnQA->GetAxis(3)->SetTitle("#it{p}_{T} (GeV/#it{c})");
246 fHnQA->GetAxis(4)->SetTitle("sign");
248 fHnQA->GetAxis(5)->SetTitle("TPC signal");
249 fHnQA->GetAxis(6)->SetTitle("n #sigma TPC");
250 fHnQA->GetAxis(7)->SetTitle("n #sigma TOF");
252 fHnQA->GetAxis(8)->SetTitle("#eta");
253 fHnQA->GetAxis(9)->SetTitle("#varphi");
254 fHnQA->GetAxis(10)->SetTitle("#it{y}");
256 fHnQA->GetAxis(11)->SetTitle("DCAr");
257 fHnQA->GetAxis(12)->SetTitle("DCAz");
259 fHnQA->GetAxis(13)->SetTitle("n #sigma #sqrt(Cdd)/DCAr");
260 fHnQA->GetAxis(14)->SetTitle("n #sigma #sqrt(Czz)/DCAz");
262 fHelper->BinLogAxis(fHnQA, 2);
263 fHelper->BinLogAxis(fHnQA, 3);
266 // ------------------------------------------------------------------
268 TH1::AddDirectory(oldStatus);
273 //________________________________________________________________________
274 void AliAnalysisTaskNetParticle::UserExec(Option_t *) {
275 // Called for each event
277 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
279 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
280 if (SetupEvent() < 0) {
281 PostData(1,fOutList);
282 PostData(2,fOutListEff);
283 PostData(3,fOutListCont);
284 PostData(4,fOutListDCA);
285 PostData(5,fOutListQA);
289 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
290 // -- Process Efficiency / Contamination Determination
291 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
292 if ((fIsMC||fIsAOD) && fModeEffCreation == 1)
295 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
296 // -- Process DCA Determination
297 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
298 if (fModeDCACreation == 1)
301 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
302 // -- Process Distributions
303 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
304 if (fModeDistCreation == 1)
307 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
308 // -- Post output data
309 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
311 PostData(1,fOutList);
312 PostData(2,fOutListEff);
313 PostData(3,fOutListCont);
314 PostData(4,fOutListDCA);
315 PostData(5,fOutListQA);
320 //________________________________________________________________________
321 void AliAnalysisTaskNetParticle::Terminate(Option_t *){
326 * ---------------------------------------------------------------------------------
328 * ---------------------------------------------------------------------------------
331 //________________________________________________________________________
332 Int_t AliAnalysisTaskNetParticle::Initialize() {
335 // ------------------------------------------------------------------
337 // ------------------------------------------------------------------
338 TString sModeName("");
340 // -- Create ESD track cuts
341 // --------------------------
342 fESDTrackCutsBase->SetMinNCrossedRowsTPC(70); // TPC
343 fESDTrackCutsBase->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8); // TPC
345 fESDTrackCutsBase->SetMaxChi2PerClusterTPC(4); // TPC
346 fESDTrackCutsBase->SetAcceptKinkDaughters(kFALSE); // TPC
347 fESDTrackCutsBase->SetRequireTPCRefit(kTRUE); // TPC
349 fESDTrackCutsBase->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff); // ITS
350 fESDTrackCutsBase->SetClusterRequirementITS(AliESDtrackCuts::kSDD,AliESDtrackCuts::kOff); // ITS
351 fESDTrackCutsBase->SetClusterRequirementITS(AliESDtrackCuts::kSSD,AliESDtrackCuts::kOff); // ITS
353 fESDTrackCutsBase->SetDCAToVertex2D(kFALSE); // VertexConstrained
354 fESDTrackCutsBase->SetRequireSigmaToVertex(kFALSE); // VertexConstrained
356 fESDTrackCutsBase->SetEtaRange(-1.*fEtaMax, fEtaMax); // Acceptance
357 fESDTrackCutsBase->SetPtRange(fPtRange[0],fPtRange[1]); // Acceptance
359 // -- Mode : clean cuts -> small contamination
360 if (fESDTrackCutMode == 0) {
362 fESDTrackCutsBase->SetRequireITSRefit(kTRUE); // ITS
363 fESDTrackCutsBase->SetMaxChi2PerClusterITS(36); // ITS
365 // -- Mode : dirty cuts -> high efficiency
366 else if (fESDTrackCutMode == 1) {
368 fESDTrackCutsBase->SetRequireITSRefit(kFALSE); // ITS
375 fESDTrackCutsBase->SetName(Form("NetParticleCuts2010_%s",sModeName.Data()));
377 // -- Create ESD BKG track cuts
378 // ------------------------------
379 fESDTrackCutsBkg = static_cast<AliESDtrackCuts*>(fESDTrackCutsBase->Clone());
380 fESDTrackCutsBkg->SetName(Form("NetParticleCuts2010_%s_Bkg",sModeName.Data()));
381 fESDTrackCutsBkg->SetMaxDCAToVertexZ(10.); // VertexConstrained
383 // -- Create ESD track cuts
384 // ------------------------------
385 fESDTrackCuts = static_cast<AliESDtrackCuts*>(fESDTrackCutsBase->Clone());
386 fESDTrackCuts->SetName(Form("NetParticleCuts2010_%s",sModeName.Data()));
387 fESDTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); // VertexConstrained -> 7*(0.0026+0.0050/pt^1.01)
388 fESDTrackCuts->SetMaxChi2TPCConstrainedGlobal(36); // VertexConstrained
389 fESDTrackCuts->SetMaxDCAToVertexZ(2); // VertexConstrained
391 // -- Create ESD Eff track cuts
392 // ------------------------------
393 fESDTrackCutsEff = static_cast<AliESDtrackCuts*>(fESDTrackCuts->Clone());
394 fESDTrackCutsEff->SetName(Form("NetParticleCuts2010_%s_Eff",sModeName.Data()));
395 fESDTrackCutsEff->SetPtRange(fPtRangeEff[0],fPtRangeEff[1]); // Acceptance
397 // ------------------------------------------------------------------
398 // -- Initialize Helper
399 // ------------------------------------------------------------------
400 if (fHelper->Initialize(fIsMC))
403 // ------------------------------------------------------------------
404 // -- Create / Initialize Efficiency/Contamination
405 // ------------------------------------------------------------------
406 if ((fIsMC||fIsAOD) && fModeEffCreation == 1) {
407 fEffCont = new AliAnalysisNetParticleEffCont;
408 fEffCont->Initialize(fESDTrackCutsEff, fHelper,fAODtrackCutBit);
411 // ------------------------------------------------------------------
412 // -- Create / Initialize DCA Determination
413 // ------------------------------------------------------------------
414 if (fModeDCACreation == 1) {
415 fDCA = new AliAnalysisNetParticleDCA;
416 fDCA->Initialize(fESDTrackCuts, fESDTrackCutsBkg, fHelper);
419 // ------------------------------------------------------------------
420 // -- Create / Initialize DCA Determination
421 // ------------------------------------------------------------------
422 if (fModeDistCreation == 1) {
423 fDist = new AliAnalysisNetParticleDistribution;
424 fDist->Initialize(fHelper, fESDTrackCuts, fIsMC, fPtRange, fEtaMax,fAODtrackCutBit);
427 // ------------------------------------------------------------------
429 // ------------------------------------------------------------------
436 * ---------------------------------------------------------------------------------
437 * Setup/Reset Methods - private
438 * ---------------------------------------------------------------------------------
441 //________________________________________________________________________
442 Int_t AliAnalysisTaskNetParticle::SetupEvent() {
443 // Setup Reading of event
444 // > return 0 for success / accepted event
445 // > return -1 for failed setup
446 // > return -2 for rejected event
451 // ------------------------------------------------------------------
453 if (SetupESDEvent() < 0) {
454 AliError("Setup ESD Event failed");
460 // ------------------------------------------------------------------
462 if (SetupAODEvent() < 0) {
463 AliError("Setup AOD Event failed");
469 // ------------------------------------------------------------------
470 if (fIsMC && SetupMCEvent() < 0) {
471 AliError("Setup MC Event failed");
475 // -- Setup Event for Helper / EffCont / DCA / Dist classes
476 // ------------------------------------------------------------------
477 fHelper->SetupEvent(fESDHandler, fAODHandler, fMCEvent);
479 if (fIsMC && fModeEffCreation)
480 fEffCont->SetupEvent(fESDHandler, fMCEvent);
482 if (fIsAOD && fModeEffCreation)
483 fEffCont->SetupEvent(fAODHandler);
485 if (fModeDCACreation == 1)
486 fDCA->SetupEvent(fESDHandler, fMCEvent);
488 if (fModeDistCreation == 1)
489 fDist->SetupEvent(fESDHandler, fAODHandler, fMCEvent);
491 // -- Evaluate Event cuts
492 // ------------------------------------------------------------------
493 return fHelper->IsEventRejected() ? -2 : 0;
496 //________________________________________________________________________
497 Int_t AliAnalysisTaskNetParticle::SetupESDEvent() {
498 // -- Setup ESD Event
499 // > return 0 for success
500 // > return -1 for failed setup
502 fESDHandler= dynamic_cast<AliESDInputHandler*>
503 (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
505 AliError("Could not get ESD input handler");
509 fESD = fESDHandler->GetEvent();
511 AliError("Could not get ESD event");
515 // -- Check PID response
516 // ------------------------------------------------------------------
517 if (!fESDHandler->GetPIDResponse()) {
518 AliError("Could not get PID response");
523 // ------------------------------------------------------------------
524 if (!fESD->GetPrimaryVertexTracks()) {
525 AliError("Could not get vertex from tracks");
529 // -- Check Centrality
530 // ------------------------------------------------------------------
531 if (!fESD->GetCentrality()) {
532 AliError("Could not get centrality");
539 //________________________________________________________________________
540 Int_t AliAnalysisTaskNetParticle::SetupAODEvent() {
541 // -- Setup AOD Event
542 // > return 0 for success
543 // > return -1 for failed setup
545 fAODHandler= dynamic_cast<AliAODInputHandler*>
546 (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
548 AliError("Could not get AOD input handler");
552 fAOD = fAODHandler->GetEvent();
554 AliError("Could not get AOD event");
558 // -- Check PID response
559 // ------------------------------------------------------------------
560 if (!fAODHandler->GetPIDResponse()) {
561 AliError("Could not get PID response");
566 // ------------------------------------------------------------------
567 if (!fAOD->GetPrimaryVertex()) {
568 AliError("Could not get primary vertex");
572 // -- Check Centrality
573 // ------------------------------------------------------------------
574 if (!fAOD->GetHeader()->GetCentralityP()) {
575 AliError("Could not get centrality");
582 //________________________________________________________________________
583 Int_t AliAnalysisTaskNetParticle::SetupMCEvent() {
585 // > return 0 for success
586 // > return -1 for failed setup
588 AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>
589 (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
591 fMCEvent = mcH->MCEvent();
593 AliError("MC event not available");
598 // ------------------------------------------------------------------
599 AliHeader* header = fMCEvent->Header();
601 AliError("MC header not available");
606 // ------------------------------------------------------------------
607 fMCStack = fMCEvent->Stack();
609 AliError("MC stack not available");
613 // -- Check GenHeader
614 // ------------------------------------------------------------------
615 if (!header->GenEventHeader()) {
616 AliError("Could not retrieve genHeader from header");
620 // -- Check primary vertex
621 // ------------------------------------------------------------------
622 if (!fMCEvent->GetPrimaryVertex()){
623 AliError("Could not get MC vertex");
630 //________________________________________________________________________
631 void AliAnalysisTaskNetParticle::ResetEvent() {
634 // -- Reset ESD Event
637 // -- Reset ESD Event
644 // -- Reset Dist Creation
645 if (fModeDistCreation == 1)
652 * ---------------------------------------------------------------------------------
653 * Process Methods - private
654 * ---------------------------------------------------------------------------------
659 //________________________________________________________________________
660 void AliAnalysisTaskNetParticle::ProcessESDTrackLoop() {
661 // -- Process ESD tracks and fill histograms
665 for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
666 AliESDtrack *track = fESD->GetTrack(idxTrack);
668 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
669 // -- Check track cuts
670 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
672 // -- Check if charged track is accepted for basic parameters
673 if (!fHelper->IsTrackAcceptedBasicCharged(track))
676 // -- Check if accepted - BKG
677 if (!fESDTrackCutsBkg->AcceptTrack(track))
680 // -- Check if accepted in rapidity window
682 if (!fHelper->IsTrackAcceptedRapidity(track, yP))
685 // -- Check if accepted bt PID from TPC or TPC+TOF
687 Bool_t isAcceptedPID = fHelper->IsTrackAcceptedPID(track, pid);
689 // -- Check if accepted with thighter DCA cuts
690 Bool_t isAcceptedDCA = fHelper->IsTrackAcceptedDCA(track);
692 // -- Check track cuts
693 Bool_t isAcceptedVertex = fESDTrackCuts->AcceptTrack(track);
695 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
696 // -- Fill tracks in QA THnSparseF
697 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
699 if (fUseQATHnSparse && fHnQA->GetEntries() < 5e5) {
702 Float_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z
703 track->GetImpactParameters(dca,cov);
705 Float_t dcaRoverCdd = ( TMath::Sqrt(cov[0]) != 0. ) ? dca[0]/TMath::Sqrt(cov[0]) : -9.99;
706 Float_t dcaZoverCzz = ( TMath::Sqrt(cov[2]) != 0. ) ? dca[1]/TMath::Sqrt(cov[2]) : -9.99;
709 Double_t(fHelper->GetCentralityBin()), // 0 centrality
710 Double_t(isAcceptedVertex || isAcceptedDCA), // 1 isAccepted -> Vertex || isAcceptedDCA
711 track->GetInnerParam()->GetP(), // 2 p at InnerParam
713 track->GetSign(), // 4 sign
714 track->GetTPCsignal(), // 5 TPC dE/dx
715 pid[0], // 6 n Sigma TPC
716 pid[1], // 7 n Sigma TOF
717 track->Eta(), // 8 eta
718 track->Phi(), // 9 phi
722 dcaRoverCdd, // 13 sqrt(cov[dd])
723 dcaZoverCzz, // 14 sqrt(cov[zz])
729 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
730 // -- Apply track cuts
731 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
733 if (!isAcceptedVertex || !isAcceptedDCA)
741 } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
743 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
744 // -- Fill Particle Fluctuation Histograms
745 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
748 Int_t tpcRef = fESDTrackCuts->GetReferenceMultiplicity(fESD,kTRUE);
750 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTPCref0")))->Fill(fHelper->GetCentralityBin(), tpcRef);
751 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTracks0")))->Fill(fHelper->GetCentralityBin(), nTracks);
753 Float_t centPercentile = fHelper->GetCentralityPercentile();
754 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTPCref1")))->Fill(centPercentile, tpcRef);
755 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTracks1")))->Fill(centPercentile, nTracks);