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 Bool_t oldStatus = TH1::AddDirectoryStatus();
136 TH1::AddDirectory(kFALSE);
138 fOutList = new TList;
139 fOutList->SetName(GetName()) ;
140 fOutList->SetOwner(kTRUE);
142 fOutListEff = new TList;
143 fOutListEff->SetName(Form("%s_eff",GetName()));
144 fOutListEff->SetOwner(kTRUE) ;
146 fOutListCont = new TList;
147 fOutListCont->SetName(Form("%s_cont",GetName()));
148 fOutListCont->SetOwner(kTRUE) ;
150 fOutListDCA = new TList;
151 fOutListDCA->SetName(Form("%s_dca",GetName()));
152 fOutListDCA->SetOwner(kTRUE) ;
154 fOutListQA = new TList;
155 fOutListQA->SetName(Form("%s_qa",GetName()));
156 fOutListQA->SetOwner(kTRUE) ;
158 // ------------------------------------------------------------------
159 // -- Get event / trigger statistics histograms
160 // ------------------------------------------------------------------
162 fOutList->Add(fHelper->GetHEventStat0());
163 fOutList->Add(fHelper->GetHEventStat1());
164 fOutList->Add(fHelper->GetHTriggerStat());
165 fOutList->Add(fHelper->GetHCentralityStat());
167 // ------------------------------------------------------------------
168 // -- Add histograms from distribution class
169 // ------------------------------------------------------------------
170 if (fModeDistCreation == 1)
171 fDist->CreateHistograms(fOutList);
173 // ------------------------------------------------------------------
174 // -- Add histograms from efficiency/contamination class
175 // ------------------------------------------------------------------
176 if ((fIsAOD||fIsMC) && fModeEffCreation == 1) {
177 fOutListEff->Add(fEffCont->GetHnEff());
178 fOutListCont->Add(fEffCont->GetHnCont());
181 // ------------------------------------------------------------------
182 // -- Add histograms from DCA class
183 // ------------------------------------------------------------------
184 if (fModeDCACreation == 1)
185 fOutListDCA->Add(fDCA->GetHnDCA());
187 // ------------------------------------------------------------------
188 // -- Add Multiplicity Correlations
189 // ------------------------------------------------------------------
191 fOutList->Add(new TH2F("fHMultCorrTPCref0", "Centrality vs Multiplicity (TPCref);Centrality;Multiplicity (TPCref)",
192 24, -0.5, 11.49, 10001, 0.5, 10000.49));
193 fOutList->Add(new TH2F("fHMultCorrTracks0", "Centrality vs Multiplicity (Tracks);Centrality;Multiplicity (Tracks)",
194 24, -0.5, 11.49, 10001, 0.5, 10000.49));
195 fOutList->Add(new TH2F("fHMultCorrESDTracks0", "Centrality vs Multiplicity (ESDTracks);Centrality;Multiplicity (ESDTracks)",
196 24, -0.5, 11.49, 10001, 0.5, 10000.49));
198 fOutList->Add(new TH2F("fHMultCorrTPCref1", "Centrality vs Multiplicity (TPCref);Centrality;Multiplicity (TPCref)",
199 101, -0.5, 100.49, 10001, 0.5, 10000.49));
200 fOutList->Add(new TH2F("fHMultCorrTracks1", "Centrality vs Multiplicity (Tracks);Centrality;Multiplicity (Tracks)",
201 101, -0.5, 100.49, 10001, 0.5, 10000.49));
202 fOutList->Add(new TH2F("fHMultCorrESDTracks1", "Centrality vs Multiplicity (ESDTracks);Centrality;Multiplicity (ESDTracks)",
203 101, -0.5, 100.49, 10001, 0.5, 10000.49));
205 // ------------------------------------------------------------------
206 // -- Create THnSparseF - QA
207 // ------------------------------------------------------------------
209 Double_t dCent[2] = {-0.5, 8.5};
212 Double_t dEta[2] = {-0.9, 0.9}; // -> 37 bins
213 Int_t iEta = Int_t((dEta[1]-dEta[0]) / 0.075) +1 ;
215 Double_t dRap[2] = {-0.5, 0.5};
216 Int_t iRap = Int_t((dRap[1]-dRap[0]) / 0.075) +1 ;
218 Double_t dPhi[2] = {0.0, TMath::TwoPi()};
221 Double_t dPt[2] = {0.1, 3.0};
222 Int_t iPt = Int_t((dPt[1]-dPt[0]) / 0.075);
224 Double_t dSign[2] = {-1.5, 1.5};
227 // cent:isAccepted: pInner: pt: sign:tpcSignal:nSigmaTPC:nSigmaTOF: eta: phi: y: dcar: dcaz: nSigmaCdd: nSigmaCzz
228 Int_t bin[15] = { iCent, 2 , iPt, iPt, iSign, 500, 50 , 50 , iEta, iPhi, iRap, 50 , 50 , 50 , 50 };
229 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.};
230 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.};
232 if (fUseQATHnSparse) {
233 fOutListQA->Add(new THnSparseF("fHnQA", "cent:isAccepted:pInner:pt:sign:tpcSignal:nSigmaTPC:nSigmaTOF:eta:phi:u:dcar:dcaz:nSigmaCdd:nSigmaCzz",
236 fHnQA = static_cast<THnSparseF*>(fOutListQA->Last());
239 fHnQA->GetAxis(0)->SetTitle("centrality");
240 fHnQA->GetAxis(1)->SetTitle("isAccepted");
241 fHnQA->GetAxis(2)->SetTitle("#it{p}_{Inner} (GeV/#it{c})");
242 fHnQA->GetAxis(3)->SetTitle("#it{p}_{T} (GeV/#it{c})");
243 fHnQA->GetAxis(4)->SetTitle("sign");
245 fHnQA->GetAxis(5)->SetTitle("TPC signal");
246 fHnQA->GetAxis(6)->SetTitle("n #sigma TPC");
247 fHnQA->GetAxis(7)->SetTitle("n #sigma TOF");
249 fHnQA->GetAxis(8)->SetTitle("#eta");
250 fHnQA->GetAxis(9)->SetTitle("#varphi");
251 fHnQA->GetAxis(10)->SetTitle("#it{y}");
253 fHnQA->GetAxis(11)->SetTitle("DCAr");
254 fHnQA->GetAxis(12)->SetTitle("DCAz");
256 fHnQA->GetAxis(13)->SetTitle("n #sigma #sqrt(Cdd)/DCAr");
257 fHnQA->GetAxis(14)->SetTitle("n #sigma #sqrt(Czz)/DCAz");
259 fHelper->BinLogAxis(fHnQA, 2);
260 fHelper->BinLogAxis(fHnQA, 3);
263 // ------------------------------------------------------------------
265 TH1::AddDirectory(oldStatus);
270 //________________________________________________________________________
271 void AliAnalysisTaskNetParticle::UserExec(Option_t *) {
272 // Called for each event
274 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
276 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
277 if (SetupEvent() < 0) {
278 PostData(1,fOutList);
279 PostData(2,fOutListEff);
280 PostData(3,fOutListCont);
281 PostData(4,fOutListDCA);
282 PostData(5,fOutListQA);
286 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
287 // -- Process Efficiency / Contamination Determination
288 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
289 if ((fIsMC||fIsAOD) && fModeEffCreation == 1)
292 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
293 // -- Process DCA Determination
294 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
295 if (fModeDCACreation == 1)
298 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
299 // -- Process Distributions
300 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
301 if (fModeDistCreation == 1)
304 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
305 // -- Post output data
306 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
308 PostData(1,fOutList);
309 PostData(2,fOutListEff);
310 PostData(3,fOutListCont);
311 PostData(4,fOutListDCA);
312 PostData(5,fOutListQA);
317 //________________________________________________________________________
318 void AliAnalysisTaskNetParticle::Terminate(Option_t *){
323 * ---------------------------------------------------------------------------------
325 * ---------------------------------------------------------------------------------
328 //________________________________________________________________________
329 Int_t AliAnalysisTaskNetParticle::Initialize() {
332 // ------------------------------------------------------------------
334 // ------------------------------------------------------------------
335 TString sModeName("");
337 // -- Create ESD track cuts
338 // --------------------------
339 fESDTrackCutsBase->SetMinNCrossedRowsTPC(70); // TPC
340 fESDTrackCutsBase->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8); // TPC
342 fESDTrackCutsBase->SetMaxChi2PerClusterTPC(4); // TPC
343 fESDTrackCutsBase->SetAcceptKinkDaughters(kFALSE); // TPC
344 fESDTrackCutsBase->SetRequireTPCRefit(kTRUE); // TPC
346 fESDTrackCutsBase->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff); // ITS
347 fESDTrackCutsBase->SetClusterRequirementITS(AliESDtrackCuts::kSDD,AliESDtrackCuts::kOff); // ITS
348 fESDTrackCutsBase->SetClusterRequirementITS(AliESDtrackCuts::kSSD,AliESDtrackCuts::kOff); // ITS
350 fESDTrackCutsBase->SetDCAToVertex2D(kFALSE); // VertexConstrained
351 fESDTrackCutsBase->SetRequireSigmaToVertex(kFALSE); // VertexConstrained
353 fESDTrackCutsBase->SetEtaRange(-1.*fEtaMax, fEtaMax); // Acceptance
354 fESDTrackCutsBase->SetPtRange(fPtRange[0],fPtRange[1]); // Acceptance
356 // -- Mode : clean cuts -> small contamination
357 if (fESDTrackCutMode == 0) {
359 fESDTrackCutsBase->SetRequireITSRefit(kTRUE); // ITS
360 fESDTrackCutsBase->SetMaxChi2PerClusterITS(36); // ITS
362 // -- Mode : dirty cuts -> high efficiency
363 else if (fESDTrackCutMode == 1) {
365 fESDTrackCutsBase->SetRequireITSRefit(kFALSE); // ITS
372 fESDTrackCutsBase->SetName(Form("NetParticleCuts2010_%s",sModeName.Data()));
374 // -- Create ESD BKG track cuts
375 // ------------------------------
376 fESDTrackCutsBkg = static_cast<AliESDtrackCuts*>(fESDTrackCutsBase->Clone());
377 fESDTrackCutsBkg->SetName(Form("NetParticleCuts2010_%s_Bkg",sModeName.Data()));
378 fESDTrackCutsBkg->SetMaxDCAToVertexZ(10.); // VertexConstrained
380 // -- Create ESD track cuts
381 // ------------------------------
382 fESDTrackCuts = static_cast<AliESDtrackCuts*>(fESDTrackCutsBase->Clone());
383 fESDTrackCuts->SetName(Form("NetParticleCuts2010_%s",sModeName.Data()));
384 fESDTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); // VertexConstrained -> 7*(0.0026+0.0050/pt^1.01)
385 fESDTrackCuts->SetMaxChi2TPCConstrainedGlobal(36); // VertexConstrained
386 fESDTrackCuts->SetMaxDCAToVertexZ(2); // VertexConstrained
388 // -- Create ESD Eff track cuts
389 // ------------------------------
390 fESDTrackCutsEff = static_cast<AliESDtrackCuts*>(fESDTrackCuts->Clone());
391 fESDTrackCutsEff->SetName(Form("NetParticleCuts2010_%s_Eff",sModeName.Data()));
392 fESDTrackCutsEff->SetPtRange(fPtRangeEff[0],fPtRangeEff[1]); // Acceptance
394 // ------------------------------------------------------------------
395 // -- Initialize Helper
396 // ------------------------------------------------------------------
397 if (fHelper->Initialize(fIsMC))
400 // ------------------------------------------------------------------
401 // -- Create / Initialize Efficiency/Contamination
402 // ------------------------------------------------------------------
403 if ((fIsMC||fIsAOD) && fModeEffCreation == 1) {
404 fEffCont = new AliAnalysisNetParticleEffCont;
405 fEffCont->Initialize(fESDTrackCutsEff, fHelper,fAODtrackCutBit);
408 // ------------------------------------------------------------------
409 // -- Create / Initialize DCA Determination
410 // ------------------------------------------------------------------
411 if (fModeDCACreation == 1) {
412 fDCA = new AliAnalysisNetParticleDCA;
413 fDCA->Initialize(fESDTrackCuts, fESDTrackCutsBkg, fHelper);
416 // ------------------------------------------------------------------
417 // -- Create / Initialize DCA Determination
418 // ------------------------------------------------------------------
419 if (fModeDistCreation == 1) {
420 fDist = new AliAnalysisNetParticleDistribution;
421 fDist->Initialize(fHelper, fESDTrackCuts, fIsMC, fPtRange, fEtaMax,fAODtrackCutBit);
424 // ------------------------------------------------------------------
426 // ------------------------------------------------------------------
433 * ---------------------------------------------------------------------------------
434 * Setup/Reset Methods - private
435 * ---------------------------------------------------------------------------------
438 //________________________________________________________________________
439 Int_t AliAnalysisTaskNetParticle::SetupEvent() {
440 // Setup Reading of event
441 // > return 0 for success / accepted event
442 // > return -1 for failed setup
443 // > return -2 for rejected event
448 // ------------------------------------------------------------------
450 if (SetupESDEvent() < 0) {
451 AliError("Setup ESD Event failed");
457 // ------------------------------------------------------------------
459 if (SetupAODEvent() < 0) {
460 AliError("Setup AOD Event failed");
466 // ------------------------------------------------------------------
467 if (fIsMC && SetupMCEvent() < 0) {
468 AliError("Setup MC Event failed");
472 // -- Setup Event for Helper / EffCont / DCA / Dist classes
473 // ------------------------------------------------------------------
474 fHelper->SetupEvent(fESDHandler, fAODHandler, fMCEvent);
476 if (fIsMC && fModeEffCreation)
477 fEffCont->SetupEvent(fESDHandler, fMCEvent);
479 if (fIsAOD && fModeEffCreation)
480 fEffCont->SetupEvent(fAODHandler);
482 if (fModeDCACreation == 1)
483 fDCA->SetupEvent(fESDHandler, fMCEvent);
485 if (fModeDistCreation == 1)
486 fDist->SetupEvent(fESDHandler, fAODHandler, fMCEvent);
488 // -- Evaluate Event cuts
489 // ------------------------------------------------------------------
490 return fHelper->IsEventRejected() ? -2 : 0;
493 //________________________________________________________________________
494 Int_t AliAnalysisTaskNetParticle::SetupESDEvent() {
495 // -- Setup ESD Event
496 // > return 0 for success
497 // > return -1 for failed setup
499 fESDHandler= dynamic_cast<AliESDInputHandler*>
500 (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
502 AliError("Could not get ESD input handler");
506 fESD = fESDHandler->GetEvent();
508 AliError("Could not get ESD event");
512 // -- Check PID response
513 // ------------------------------------------------------------------
514 if (!fESDHandler->GetPIDResponse()) {
515 AliError("Could not get PID response");
520 // ------------------------------------------------------------------
521 if (!fESD->GetPrimaryVertexTracks()) {
522 AliError("Could not get vertex from tracks");
526 // -- Check Centrality
527 // ------------------------------------------------------------------
528 if (!fESD->GetCentrality()) {
529 AliError("Could not get centrality");
536 //________________________________________________________________________
537 Int_t AliAnalysisTaskNetParticle::SetupAODEvent() {
538 // -- Setup AOD Event
539 // > return 0 for success
540 // > return -1 for failed setup
542 fAODHandler= dynamic_cast<AliAODInputHandler*>
543 (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
545 AliError("Could not get AOD input handler");
549 fAOD = fAODHandler->GetEvent();
551 AliError("Could not get AOD event");
555 // -- Check PID response
556 // ------------------------------------------------------------------
557 if (!fAODHandler->GetPIDResponse()) {
558 AliError("Could not get PID response");
563 // ------------------------------------------------------------------
564 if (!fAOD->GetPrimaryVertex()) {
565 AliError("Could not get primary vertex");
569 // -- Check Centrality
570 // ------------------------------------------------------------------
571 if (!fAOD->GetHeader()->GetCentralityP()) {
572 AliError("Could not get centrality");
579 //________________________________________________________________________
580 Int_t AliAnalysisTaskNetParticle::SetupMCEvent() {
582 // > return 0 for success
583 // > return -1 for failed setup
585 AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>
586 (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
588 fMCEvent = mcH->MCEvent();
590 AliError("MC event not available");
595 // ------------------------------------------------------------------
596 AliHeader* header = fMCEvent->Header();
598 AliError("MC header not available");
603 // ------------------------------------------------------------------
604 fMCStack = fMCEvent->Stack();
606 AliError("MC stack not available");
610 // -- Check GenHeader
611 // ------------------------------------------------------------------
612 if (!header->GenEventHeader()) {
613 AliError("Could not retrieve genHeader from header");
617 // -- Check primary vertex
618 // ------------------------------------------------------------------
619 if (!fMCEvent->GetPrimaryVertex()){
620 AliError("Could not get MC vertex");
627 //________________________________________________________________________
628 void AliAnalysisTaskNetParticle::ResetEvent() {
631 // -- Reset ESD Event
634 // -- Reset ESD Event
641 // -- Reset Dist Creation
642 if (fModeDistCreation == 1)
649 * ---------------------------------------------------------------------------------
650 * Process Methods - private
651 * ---------------------------------------------------------------------------------
656 //________________________________________________________________________
657 void AliAnalysisTaskNetParticle::ProcessESDTrackLoop() {
658 // -- Process ESD tracks and fill histograms
662 for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
663 AliESDtrack *track = fESD->GetTrack(idxTrack);
665 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
666 // -- Check track cuts
667 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
669 // -- Check if charged track is accepted for basic parameters
670 if (!fHelper->IsTrackAcceptedBasicCharged(track))
673 // -- Check if accepted - BKG
674 if (!fESDTrackCutsBkg->AcceptTrack(track))
677 // -- Check if accepted in rapidity window
679 if (!fHelper->IsTrackAcceptedRapidity(track, yP))
682 // -- Check if accepted bt PID from TPC or TPC+TOF
684 Bool_t isAcceptedPID = fHelper->IsTrackAcceptedPID(track, pid);
686 // -- Check if accepted with thighter DCA cuts
687 Bool_t isAcceptedDCA = fHelper->IsTrackAcceptedDCA(track);
689 // -- Check track cuts
690 Bool_t isAcceptedVertex = fESDTrackCuts->AcceptTrack(track);
692 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
693 // -- Fill tracks in QA THnSparseF
694 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
696 if (fUseQATHnSparse && fHnQA->GetEntries() < 5e5) {
699 Float_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z
700 track->GetImpactParameters(dca,cov);
702 Float_t dcaRoverCdd = ( TMath::Sqrt(cov[0]) != 0. ) ? dca[0]/TMath::Sqrt(cov[0]) : -9.99;
703 Float_t dcaZoverCzz = ( TMath::Sqrt(cov[2]) != 0. ) ? dca[1]/TMath::Sqrt(cov[2]) : -9.99;
706 Double_t(fHelper->GetCentralityBin()), // 0 centrality
707 Double_t(isAcceptedVertex || isAcceptedDCA), // 1 isAccepted -> Vertex || isAcceptedDCA
708 track->GetInnerParam()->GetP(), // 2 p at InnerParam
710 track->GetSign(), // 4 sign
711 track->GetTPCsignal(), // 5 TPC dE/dx
712 pid[0], // 6 n Sigma TPC
713 pid[1], // 7 n Sigma TOF
714 track->Eta(), // 8 eta
715 track->Phi(), // 9 phi
719 dcaRoverCdd, // 13 sqrt(cov[dd])
720 dcaZoverCzz, // 14 sqrt(cov[zz])
726 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
727 // -- Apply track cuts
728 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
730 if (!isAcceptedVertex || !isAcceptedDCA)
738 } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
740 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
741 // -- Fill Particle Fluctuation Histograms
742 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
745 Int_t tpcRef = fESDTrackCuts->GetReferenceMultiplicity(fESD,kTRUE);
747 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTPCref0")))->Fill(fHelper->GetCentralityBin(), tpcRef);
748 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTracks0")))->Fill(fHelper->GetCentralityBin(), nTracks);
750 Float_t centPercentile = fHelper->GetCentralityPercentile();
751 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTPCref1")))->Fill(centPercentile, tpcRef);
752 (static_cast<TH2F*>(fOutList->FindObject("fHMultCorrTracks1")))->Fill(centPercentile, nTracks);