50 #include "AliCFManager.h"
51 #include "AliCFContainer.h"
53 #include "AliInputEventHandler.h"
54 #include "AliAnalysisManager.h"
55 #include "AliAODHandler.h"
56 #include "AliAODEvent.h"
62 #include "AliAODMCParticle.h"
63 #include "AliAODMCHeader.h"
64 #include "AliESDtrack.h"
66 #include "THnSparse.h"
67 #include "AliESDtrackCuts.h"
82 #include "AliAnalysisDataSlot.h"
83 #include "AliAnalysisDataContainer.h"
84 #include "AliAnalysisTaskSE.h"
85 #include "AliPIDResponse.h"
92 fHistEventsProcessed(0x0),
101 fCountRecoITSClusters(0),
106 fFillFromGenerated(kFALSE),
107 fOriginDselection(0),
108 fAcceptanceUnf(kTRUE),
112 fUseFlatPtWeight(kFALSE),
114 fUseNchWeight(kFALSE),
115 fUseTrackletsWeight(kFALSE),
116 fUseMultRatioAsWeight(kFALSE),
121 fCentralitySelection(kTRUE),
123 fRejectIfNoQuark(kTRUE),
124 fUseMCVertex(kFALSE),
127 fConfiguration(kCheetah),
133 fLctoV0bachelorOption(1),
134 fGenLctoV0bachelorOption(0),
135 fUseSelectionBit(kTRUE),
137 fMultiplicityEstimator(kNtrk10),
139 fZvtxCorrectedNtrkEstimator(kFALSE),
142 fUseAdditionalCuts(kFALSE),
143 fUseCutsForTMVA(kFALSE),
144 fUseCascadeTaskForLctoV0bachelor(kFALSE),
145 fCutOnMomConservation(0.00001),
160 AliAnalysisTaskSE(name),
162 fHistEventsProcessed(0x0),
171 fCountRecoITSClusters(0),
176 fFillFromGenerated(kFALSE),
177 fOriginDselection(0),
178 fAcceptanceUnf(kTRUE),
182 fUseFlatPtWeight(kFALSE),
184 fUseNchWeight(kFALSE),
185 fUseTrackletsWeight(kFALSE),
186 fUseMultRatioAsWeight(kFALSE),
191 fCentralitySelection(kTRUE),
193 fRejectIfNoQuark(kTRUE),
194 fUseMCVertex(kFALSE),
197 fConfiguration(kCheetah),
203 fLctoV0bachelorOption(1),
204 fGenLctoV0bachelorOption(0),
205 fUseSelectionBit(kTRUE),
207 fMultiplicityEstimator(kNtrk10),
209 fZvtxCorrectedNtrkEstimator(kFALSE),
212 fUseAdditionalCuts(kFALSE),
213 fUseCutsForTMVA(kFALSE),
214 fUseCascadeTaskForLctoV0bachelor(kFALSE),
215 fCutOnMomConservation(0.00001),
230 DefineOutput(1,TH1I::Class());
231 DefineOutput(2,AliCFContainer::Class());
232 DefineOutput(3,THnSparseD::Class());
233 DefineOutput(4,AliRDHFCuts::Class());
235 DefineOutput(5,TList::Class());
236 DefineOutput(6,THnSparseF::Class());
237 DefineOutput(7,TH3F::Class());
238 DefineOutput(8,TH1F::Class());
239 DefineOutput(9,TList::Class());
240 DefineOutput(10,TList::Class());
252 AliAnalysisTaskSE::operator=(c) ;
273 AliAnalysisTaskSE(c),
274 fCFManager(c.fCFManager),
275 fHistEventsProcessed(c.fHistEventsProcessed),
276 fCorrelation(c.fCorrelation),
277 fListProfiles(c.fListProfiles),
278 fCountMC(c.fCountMC),
279 fCountAcc(c.fCountAcc),
280 fCountVertex(c.fCountVertex),
281 fCountRefit(c.fCountRefit),
282 fCountReco(c.fCountReco),
283 fCountRecoAcc(c.fCountRecoAcc),
284 fCountRecoITSClusters(c.fCountRecoITSClusters),
285 fCountRecoPPR(c.fCountRecoPPR),
286 fCountRecoPID(c.fCountRecoPID),
288 fDecayChannel(c.fDecayChannel),
289 fFillFromGenerated(c.fFillFromGenerated),
290 fOriginDselection(c.fOriginDselection),
291 fAcceptanceUnf(c.fAcceptanceUnf),
293 fUseWeight(c.fUseWeight),
295 fUseFlatPtWeight(c.fUseFlatPtWeight),
296 fUseZWeight(c.fUseZWeight),
297 fUseNchWeight(c.fUseNchWeight),
298 fUseTrackletsWeight(c.fUseTrackletsWeight),
299 fUseMultRatioAsWeight(c.fUseMultRatioAsWeight),
301 fPartName(c.fPartName),
302 fDauNames(c.fDauNames),
304 fCentralitySelection(c.fCentralitySelection),
305 fFakeSelection(c.fFakeSelection),
306 fRejectIfNoQuark(c.fRejectIfNoQuark),
307 fUseMCVertex(c.fUseMCVertex),
308 fDsOption(c.fDsOption),
309 fGenDsOption(c.fGenDsOption),
310 fConfiguration(c.fConfiguration),
311 fFuncWeight(c.fFuncWeight),
312 fHistoPtWeight(c.fHistoPtWeight),
313 fHistoMeasNch(c.fHistoMeasNch),
314 fHistoMCNch(c.fHistoMCNch),
315 fResonantDecay(c.fResonantDecay),
316 fLctoV0bachelorOption(c.fLctoV0bachelorOption),
317 fGenLctoV0bachelorOption(c.fGenLctoV0bachelorOption),
318 fUseSelectionBit(c.fUseSelectionBit),
319 fPDGcode(c.fPDGcode),
320 fMultiplicityEstimator(c.fMultiplicityEstimator),
321 fRefMult(c.fRefMult),
322 fZvtxCorrectedNtrkEstimator(c.fZvtxCorrectedNtrkEstimator),
323 fIsPPData(c.fIsPPData),
324 fIsPPbData(c.fIsPPbData),
325 fUseAdditionalCuts(c.fUseAdditionalCuts),
326 fUseCutsForTMVA(c.fUseCutsForTMVA),
327 fUseCascadeTaskForLctoV0bachelor(c.fUseCascadeTaskForLctoV0bachelor),
328 fCutOnMomConservation(c.fCutOnMomConservation),
330 fhSparseCutVar(c.fhSparseCutVar),
331 fhPtCutVar(c.fhPtCutVar),
332 fhBptCutVar(c.fhBptCutVar),
333 fListBdecays(c.fListBdecays),
363 for(Int_t i=0; i<4; i++) {
375 if (fDebug>1) printf(
"AliCFTaskVertexingHFCutVarFDSub::Init()");
376 if(
fUseWeight &&
fUseZWeight) { AliFatal(
"Can not use at the same time pt and z-vtx weights, please choose");
return; }
377 if(
fUseWeight &&
fUseNchWeight) { AliInfo(
"Beware, using at the same time pt and Nch weights, please check"); }
383 AliFatal(
"No cuts defined - Exiting...");
494 AliFatal(
"The decay channel MUST be defined according to AliCFVertexing::DecayChannel - Exiting...");
498 const char* nameoutput=GetOutputSlot(4)->GetContainer()->GetName();
500 copyfCuts->SetName(nameoutput);
503 PostData(4, copyfCuts);
506 AliFatal(
"Failing initializing AliRDHFCuts object - Exiting...");
515 period[0] =
"LHC13b"; period[1] =
"LHC13c";
518 period[0] =
"LHC10b"; period[1] =
"LHC10c"; period[2] =
"LHC10d"; period[3] =
"LHC10e";
522 for(Int_t i=0; i<nProfiles; i++){
525 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
549 PostData(2,
fCFManager->GetParticleContainer()) ;
552 AliDebug(3,Form(
"*** Processing event %d\n",
fEvents));
555 AliWarning(
"Flag to fill container with generated value ON ---> dca, d0pi, d0K, d0xd0, cosPointingAngle will be set as dummy!");
559 Error(
"UserExec",
"NO EVENT FOUND!");
563 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
565 TClonesArray *arrayBranch=0;
567 if(!aodEvent && AODEvent() && IsStandardAOD()) {
570 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
573 AliAODHandler* aodHandler = (AliAODHandler*)
574 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
575 if(aodHandler->GetExtensions()) {
576 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
577 AliAODEvent *aodFromExt = ext->GetAOD();
581 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
585 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
589 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"CascadesHF");
595 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
599 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm4Prong");
610 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"D0toKpi");
614 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
618 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"CascadesHF");
624 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Charm3Prong");
628 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Charm4Prong");
636 AliAODVertex *aodVtx = (AliAODVertex*)aodEvent->GetPrimaryVertex();
638 AliDebug(3,
"The event was skipped due to missing vertex");
643 AliError(
"Could not find array of HF vertices");
656 TClonesArray* mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
658 AliError(
"Could not find Monte-Carlo in AOD");
663 Int_t icountReco = 0;
664 Int_t icountVertex = 0;
665 Int_t icountRefit = 0;
666 Int_t icountRecoAcc = 0;
667 Int_t icountRecoITSClusters = 0;
668 Int_t icountRecoPPR = 0;
669 Int_t icountRecoPID = 0;
672 AliAODMCHeader *mcHeader =
dynamic_cast<AliAODMCHeader*
>(aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
674 AliError(
"Could not find MC Header in AOD");
680 Double_t* containerInput =
new Double_t[
fNvar];
681 Double_t* containerInputMC =
new Double_t[
fNvar];
740 AliError(
"No AliCFVertexingHF initialized");
741 delete[] containerInput;
742 delete[] containerInputMC;
746 Double_t zPrimVertex = aodVtx ->GetZ();
747 Double_t zMCVertex = mcHeader->GetVtxZ();
748 Int_t runnumber = aodEvent->GetRunNumber();
751 Double_t nTracklets = 0;
754 nTracklets = (Double_t)nTrackletsEta10;
763 nTracklets = (Double_t)nTrackletsEta10Corr;
775 AliDebug(2,Form(
"Using Nch weights, Mult=%d Weight=%f\n",nChargedMCPhysicalPrimary,
fWeight));
780 AliDebug(3,Form(
"z coordinate of MC vertex = %f, it was required to be within [-%f, +%f], skipping event", zMCVertex,
fCuts->
GetMaxVtxZ(),
fCuts->
GetMaxVtxZ()));
781 delete[] containerInput;
782 delete[] containerInputMC;
787 if(aodEvent->GetTriggerMask()==0 &&
788 (runnumber>=195344 && runnumber<=195677)){
789 AliDebug(3,
"Event rejected because of null trigger mask");
790 delete[] containerInput;
791 delete[] containerInputMC;
796 AliESDtrackCuts** trackCuts =
new AliESDtrackCuts*[cfVtxHF->
GetNProngs()];
799 for (Int_t iProng = 0; iProng<cfVtxHF->
GetNProngs()-1; iProng++){
811 for (Int_t iProng = 0; iProng<cfVtxHF->
GetNProngs(); iProng++){
834 delete[] containerInput;
835 delete[] containerInputMC;
845 Float_t centValue = 0.;
850 Double_t vzeroMult=0;
851 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aodEvent->GetVZEROData();
852 if(vzeroAOD) vzeroMult = vzeroAOD->GetMTotV0A() + vzeroAOD->GetMTotV0C();
854 Double_t multiplicity = nTracklets;
861 for (Int_t iPart=0; iPart<mcArray->GetEntriesFast(); iPart++) {
862 AliAODMCParticle* mcPart =
dynamic_cast<AliAODMCParticle*
>(mcArray->At(iPart));
864 AliError(
"Failed casting particle from MC array!, Skipping particle");
869 if ((((mcPart->GetPdgCode()%1000)/100==5||(mcPart->GetPdgCode()%1000)/100==-5)) &&
870 (mcPart->Y()<1.)&&(mcPart->Y()>-1.)) {
878 if (!
fCFManager->CheckParticleCuts(0, mcPart)) {
879 AliDebug(2,
"Check the MC-level cuts - not desidered particle");
883 AliDebug(3, Form(
"\n\n---> COOL! we found a particle (particle %d)!!! with PDG code = %d \n\n", iPart, mcPart->GetPdgCode()));
889 AliDebug(2,Form(
"Impossible to set the label array for particle %d (decaychannel = %d)", iPart,
fDecayChannel));
895 AliDebug(2,Form(
"Check on the family wrong for particle %d!!! (decaychannel = %d)", iPart,
fDecayChannel));
899 AliDebug(2,Form(
"Check on the family OK for particle %d!!! (decaychannel = %d)", iPart,
fDecayChannel));
903 Bool_t mcContainerFilled = cfVtxHF -> FillMCContainer(containerInputMC);
904 AliDebug(2, Form(
"particle = %d mcContainerFilled = %d", iPart, mcContainerFilled));
905 if (mcContainerFilled) {
908 AliDebug(2,
"Using Histogram as Pt weight function");
912 AliDebug(2,
"Using function");
916 AliDebug(2,
"Using FONLL");
919 AliDebug(2,Form(
"pt = %f, weight = %f",containerInputMC[0],
fWeight));
922 AliDebug(3, Form(
"Not in limited acceptance, containerInputMC[0] = %f, containerInputMC[1] = %f", containerInputMC[0], containerInputMC[1]));
926 AliDebug(3, Form(
"YES!! in limited acceptance, containerInputMC[0] = %f, containerInputMC[1] = %f", containerInputMC[0],containerInputMC[1]));
930 if (TMath::Abs(containerInputMC[1]) < 0.5) {
932 AliDebug(3,
"MC Lim Acc container filled\n");
938 AliDebug(3,
"MC container filled \n");
943 Bool_t mcAccepStep = cfVtxHF-> MCAcceptanceStep();
946 AliDebug(3,
"MC acceptance cut passed\n");
954 AliDebug(3,
"Vertex cut passed and container filled\n");
958 Bool_t mcRefitStep = cfVtxHF->
MCRefitStep(aodEvent, &trackCuts[0]);
961 AliDebug(3,
"MC Refit cut passed and container filled\n");
965 AliDebug(3,
"MC Refit cut not passed\n");
970 AliDebug (3,
"MC vertex step not passed\n");
975 AliDebug (3,
"MC in acceptance step not passed\n");
980 AliDebug (3,
"MC container not filled\n");
984 if (cquarks<2) AliDebug(2,Form(
"Event with %d c-quarks", cquarks));
985 AliDebug(2,Form(
"Found %i MC particles that are %s!!",icountMC,
fPartName.Data()));
986 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Acc cuts!!",icountAcc,
fPartName.Data()));
987 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Vertex cuts!!",icountVertex,
fPartName.Data()));
988 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Refit cuts!!",icountRefit,
fPartName.Data()));
996 AliDebug(2,Form(
"Found %d vertices for decay channel %d",arrayBranch->GetEntriesFast(),
fDecayChannel));
998 for(Int_t iCandid = 0; iCandid<arrayBranch->GetEntriesFast();iCandid++){
1024 Bool_t unsetvtx=kFALSE;
1031 if (!signAssociation){
1037 if (isPartOrAntipart == 0){
1038 AliDebug(2, Form(
"The candidate pdg code doesn't match the requirement set in the task (fSign = %d)",
fSign));
1043 AliDebug(3,Form(
"iCandid=%d - signAssociation=%d, isPartOrAntipart=%d",iCandid, signAssociation, isPartOrAntipart));
1046 AliDebug(3, Form(
"CF task: RecoContFilled for candidate %d is %d", iCandid, (Int_t)recoContFilled));
1047 if (recoContFilled){
1052 AliDebug(2,
"Using Histogram as Pt weight function");
1056 AliDebug(2,
"Using function");
1060 AliDebug(2,
"Using FONLL");
1063 AliDebug(2, Form(
"pt = %f, weight = %f",containerInput[0],
fWeight));
1071 Bool_t recoStep = cfVtxHF->
RecoStep();
1072 if (recoStep) AliDebug(2, Form(
"particle = %d --> CF task: Reco step for candidate %d is %d", iCandid, iCandid, (Int_t)recoStep));
1077 Bool_t isBitSelected = kTRUE;
1093 if (recoStep && recoContFilled && vtxCheck){
1096 AliDebug(3,
"Reco step passed and container filled\n");
1099 Bool_t recoAcceptanceStep = cfVtxHF->
RecoAcceptStep(&trackCuts[0]);
1100 if (recoAcceptanceStep) {
1103 AliDebug(3,
"Reco acceptance cut passed and container filled\n");
1107 Bool_t bUnfolding = cfVtxHF -> FillUnfoldingMatrix(
fPDGcode,fill);
1113 if (recoITSnCluster){
1115 icountRecoITSClusters++;
1116 AliDebug(3,
"Reco n ITS cluster cut passed and container filled\n");
1119 Int_t recoAnalysisCuts = -1, recoPidSelection = -1;
1124 Bool_t keepDs=
ProcessDs(recoAnalysisCuts);
1125 if(keepDs) recoAnalysisCuts=3;
1129 if (keepLctoV0bachelor) recoAnalysisCuts=3;
1130 AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
1131 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
1132 AliPIDResponse* pidResponse = inputHandler->GetPIDResponse();
1139 Bool_t tempAn=(recoAnalysisCuts == 3 || recoAnalysisCuts == isPartOrAntipart);
1141 if (
fDecayChannel == 32) tempAn=(recoAnalysisCuts >0 || recoAnalysisCuts == isPartOrAntipart);
1146 AliDebug(3,
"Reco Analysis cuts passed and container filled \n");
1153 Bool_t keepDs=
ProcessDs(recoPidSelection);
1154 if(keepDs) recoPidSelection=3;
1157 if (keepLctoV0bachelor) recoPidSelection=3;
1160 Bool_t tempPid=(recoPidSelection == 3 || recoPidSelection == isPartOrAntipart);
1162 if (
fDecayChannel == 32) tempPid=(recoPidSelection >0 || recoPidSelection == isPartOrAntipart);
1165 Double_t weigPID = 1.;
1168 if (isPartOrAntipart == 1){
1170 }
else if (isPartOrAntipart == 2){
1173 if ((weigPID < 0) || (weigPID > 1)) weigPID = 0.;
1177 Int_t labDau0=((AliAODTrack*)charmCandidate->GetDaughter(0))->GetLabel();
1178 AliAODMCParticle* firstDau=(AliAODMCParticle*)mcArray->UncheckedAt(TMath::Abs(labDau0));
1180 Int_t pdgCode0=TMath::Abs(firstDau->GetPdgCode());
1183 }
else if(pdgCode0==211){
1186 if ((weigPID < 0) || (weigPID > 1)) weigPID = 0.;
1199 AliDebug(3,
"Reco PID cuts passed and container filled \n");
1202 Bool_t bUnfolding = cfVtxHF -> FillUnfoldingMatrix(
fPDGcode,fill);
1207 AliDebug(3,
"Analysis Cuts step not passed \n");
1213 AliDebug(3,
"PID selection not passed \n");
1219 AliDebug(3,
"Number of ITS cluster step not passed\n");
1225 AliDebug(3,
"Reco acceptance step not passed\n");
1231 AliDebug(3,
"Reco step not passed\n");
1248 delete[] containerInput;
1249 delete[] containerInputMC;
1255 delete [] trackCuts;
1268 AliAnalysisTaskSE::Terminate();
1271 AliInfo(Form(
"Found %i MC particles that are %s in MC and satisfy Acc cuts, in %d events",
fCountAcc,
fPartName.Data(),
fEvents));
1272 AliInfo(Form(
"Found %i MC particles that are %s in MC and satisfy Acc cuts, and satisfy Vertex requirement in %d events",
fCountVertex,
fPartName.Data(),
fEvents));
1273 AliInfo(Form(
"Found %i MC particles that are %s in MC and satisfy Acc cuts, and satisfy ITS+TPC refit requirementin %d events",
fCountRefit,
fPartName.Data(),
fEvents));
1281 AliCFContainer *cont=
dynamic_cast<AliCFContainer*
> (GetOutputData(2));
1283 printf(
"CONTAINER NOT FOUND\n");
1289 TH1D** h =
new TH1D*[3];
1290 Int_t nvarToPlot = 0;
1293 for (Int_t ih = 0; ih<3; ih++){
1299 h[ih] =
new TH1D[nvarToPlot];
1301 for(Int_t iC=1;iC<nvarToPlot; iC++){
1303 h[0][iC] = *(cont->ShowProjection(iC,0));
1305 h[1][iC] = *(cont->ShowProjection(iC,1));
1307 h[2][iC] = *(cont->ShowProjection(iC,4));
1313 for (Int_t ih = 0; ih<3; ih++){
1314 h[ih] =
new TH1D[nvarToPlot];
1316 for(Int_t iC=0;iC<nvarToPlot; iC++){
1318 h[0][iC] = *(cont->ShowProjection(iC,0));
1320 h[1][iC] = *(cont->ShowProjection(iC,1));
1322 h[2][iC] = *(cont->ShowProjection(iC,4));
1330 titles =
new TString[nvarToPlot];
1331 titles[0]=
"pT_Dplus (GeV/c)";
1332 titles[1]=
"rapidity";
1333 titles[2]=
"phi (rad)";
1334 titles[3]=
"cT (#mum)";
1335 titles[4]=
"cosPointingAngle";
1336 titles[5]=
"pT_1 (GeV/c)";
1337 titles[6]=
"pT_2 (GeV/c)";
1338 titles[7]=
"pT_3 (GeV/c)";
1339 titles[8]=
"d0_1 (#mum)";
1340 titles[9]=
"d0_2 (#mum)";
1341 titles[10]=
"d0_3 (#mum)";
1342 titles[11]=
"zVertex (cm)";
1345 titles =
new TString[nvarToPlot];
1346 titles[0]=
"p_{T}(#Lambda_{c}) [GeV/c]";
1347 titles[1]=
"y(#Lambda_{c})";
1348 titles[2]=
"#varphi(#Lambda_{c}) [rad]";
1349 titles[3]=
"onTheFlyStatusV0";
1350 titles[4]=
"z_{vtx} [cm]";
1351 titles[5]=
"centrality";
1353 titles[7]=
"multiplicity";
1355 titles[8]=
"p(bachelor) [GeV/c]";
1356 titles[9]=
"p_{T}(V0) [GeV/c]";
1358 titles[11]=
"#varphi(V0) [rad]";
1359 titles[12]=
"m_{inv}(#pi^{+}#pi^{+}) [GeV/c^{2}]";
1360 titles[13]=
"dcaV0 (nSigma)";
1361 titles[14]=
"cosine pointing angle (V0)";
1362 titles[15]=
"cosine pointing angle (#Lambda_{c})";
1367 titles =
new TString[nvarToPlot];
1368 titles[0]=
"pT_D0 (GeV/c)";
1369 titles[1]=
"rapidity";
1370 titles[2]=
"cosThetaStar";
1371 titles[3]=
"pT_pi (GeV/c)";
1372 titles[4]=
"pT_K (Gev/c)";
1373 titles[5]=
"cT (#mum)";
1374 titles[6]=
"dca (#mum)";
1375 titles[7]=
"d0_pi (#mum)";
1376 titles[8]=
"d0_K (#mum)";
1377 titles[9]=
"d0xd0 (#mum^2)";
1378 titles[10]=
"cosPointingAngle";
1379 titles[11]=
"phi (rad)";
1384 titles =
new TString[nvarToPlot];
1386 titles[0]=
"p_{T}(#Lambda_{c}) [GeV/c]";
1387 titles[1]=
"y(#Lambda_{c})";
1388 titles[2]=
"#varphi(#Lambda_{c}) [rad]";
1389 titles[3]=
"onTheFlyStatusV0";
1390 titles[4]=
"z_{vtx} [cm]";
1391 titles[5]=
"centrality";
1393 titles[7]=
"multiplicity";
1395 titles[0]=
"pT_candidate (GeV/c)";
1396 titles[1]=
"rapidity";
1397 titles[2]=
"cT (#mum)";
1399 titles[4]=
"z_{vtx}";
1400 titles[5]=
"centrality";
1402 titles[7]=
"multiplicity";
1406 Int_t markers[16]={20,24,21,25,27,28,
1409 Int_t colors[3]={2,8,4};
1410 for(Int_t iC=0;iC<nvarToPlot; iC++){
1411 for(Int_t iStep=0;iStep<3;iStep++){
1412 h[iStep][iC].SetTitle(titles[iC].
Data());
1413 h[iStep][iC].GetXaxis()->SetTitle(titles[iC].
Data());
1414 Double_t maxh=h[iStep][iC].GetMaximum();
1415 h[iStep][iC].GetYaxis()->SetRangeUser(0,maxh*1.2);
1416 h[iStep][iC].SetMarkerStyle(markers[iC]);
1417 h[iStep][iC].SetMarkerColor(colors[iStep]);
1421 gStyle->SetCanvasColor(0);
1422 gStyle->SetFrameFillColor(0);
1423 gStyle->SetTitleFillColor(0);
1424 gStyle->SetStatColor(0);
1427 TCanvas * c1 =
new TCanvas(Form(
"c1New_%d",
fDecayChannel),
"Vars 0, 1, 2, 3",1100,1200);
1430 for(Int_t iVar=0; iVar<4; iVar++){
1432 h[0][iVar].DrawCopy(
"p");
1434 h[1][iVar].DrawCopy(
"p");
1436 h[2][iVar].DrawCopy(
"p");
1439 TCanvas * c2 =
new TCanvas(Form(
"c2New_%d",
fDecayChannel),
"Vars 4, 5, 6, 7",1100,1200);
1442 for(Int_t iVar=4; iVar<8; iVar++){
1444 h[0][iVar].DrawCopy(
"p");
1446 h[1][iVar].DrawCopy(
"p");
1448 h[2][iVar].DrawCopy(
"p");
1452 TCanvas * c3 =
new TCanvas(Form(
"c3New_%d",
fDecayChannel),
"Vars 8, 9, 10, 11",1100,1200);
1455 for(Int_t iVar=8; iVar<12; iVar++){
1457 h[0][iVar].DrawCopy(
"p");
1459 h[1][iVar].DrawCopy(
"p");
1461 h[2][iVar].DrawCopy(
"p");
1464 TCanvas * c4 =
new TCanvas(Form(
"c4New_%d",
fDecayChannel),
"Vars 12, 13, 14, 15",1100,1200);
1467 for(Int_t iVar=12; iVar<16; iVar++){
1469 h[0][iVar].DrawCopy(
"p");
1471 h[1][iVar].DrawCopy(
"p");
1473 h[2][iVar].DrawCopy(
"p");
1491 TFile* file_projection =
new TFile(
"CFtaskHFprojectionNew.root",
"RECREATE");
1496 for(Int_t iC=0;iC<nvarToPlot; iC++){
1497 for(Int_t iStep=0;iStep<3;iStep++){
1498 h[iStep][iC].Write(Form(
"Step%d_%s",iStep,titles[iC].
Data()));
1501 file_projection->Close();
1502 for (Int_t ih = 0; ih<3; ih++)
delete [] h[ih];
1514 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
1518 const char* nameoutput=GetOutputSlot(1)->GetContainer()->GetName();
1532 fhBptCutVar =
new TH1F(
"hBptCutVar",
"B meson #it{p}_{T} spectrum;#it{p}_{T};Counts (a.u.)",201,0.,50.25);
1535 PostData( 2,
fCFManager->GetParticleContainer()) ;
1551 fFuncWeight=
new TF1(
"funcWeight",
"[0]+[1]*TMath::Exp(-[2]*x)",0.,50.);
1563 fFuncWeight=
new TF1(
"funcWeight",
"[0]+[1]/TMath::Power(x,[2])",0.05,50.);
1575 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,50.);
1576 fFuncWeight->SetParameters(1.92381e+01, 5.05055e+00, 1.05314e+01, 2.5, 1.88214e-03, 3.44871e+00, -9.74325e-02, 1.97671e+00, -3.21278e-01);
1586 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,50.);
1587 fFuncWeight->SetParameters(6.10443e+00, 1.53487e+00, 1.99474e+00, 2.5, 5.51172e-03, 5.86590e+00, -5.46963e-01, 9.41201e-02, -1.64323e-01);
1596 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,30.);
1597 fFuncWeight->SetParameters(2.94999e+00,3.47032e+00,2.81278e+00,2.5,1.93370e-02,3.86865e+00,-1.54113e-01,8.86944e-02,2.56267e-02);
1606 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,40.);
1607 fFuncWeight->SetParameters(2.41522e+01,4.92146e+00,6.72495e+00,2.5,6.15361e-03,4.78995e+00,-4.29135e-01,3.99421e-01,-1.57220e-02);
1616 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,50.);
1617 fFuncWeight->SetParameters(1.31497e+01,3.30503e+00,3.45594e+00,2.5,2.28642e-02,1.42372e+00,2.32892e-04,5.21986e-02,-2.14236e-01,3.86200e+00);
1626 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,50.);
1627 fFuncWeight->SetParameters(6.54519e+00,2.74007e+00,2.48325e+00,2.5,1.61113e-01,-5.32546e-01,-3.75916e-04,2.38189e-01,-2.17561e-01,2.35975e+00);
1636 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,50.);
1637 fFuncWeight->SetParameters(1.85862e+01,2.48171e+00,3.39356e+00,2.5,1.70426e-02,2.28453e+00,-4.57749e-02,5.84585e-02,-3.19719e-01,4.16789e+00);
1646 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x)",0.15,40.);
1647 fFuncWeight->SetParameters(2.77730e+01,4.78942e+00,7.45378e+00,2.5,9.86255e-02,2.30120e+00,-4.16435e-01,3.43770e-01,-2.29380e-02);
1656 fFuncWeight=
new TF1(
"funcWeight",
"([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x+[9])",0.15,40.);
1657 fFuncWeight->SetParameters(1.34412e+01,3.20068e+00,5.14481e+00,2.5,7.59405e-04,7.51821e+00,-3.93811e-01,2.16849e-02,-3.37768e-02,2.40308e+00);
1680 Double_t func1[4] = {0.322643,2.96275,2.30301,2.5};
1681 Double_t func2[4] = {0.36609,1.94635,1.40463,2.5};
1683 Double_t dndpt_func1 =
dNdptFit(pt,func1);
1685 Double_t dndpt_func2 =
dNdptFit(pt,func2);
1686 AliDebug(2,Form(
"pt = %f, FONLL = %f, Pythia = %f, ratio = %f",pt,dndpt_func1,dndpt_func2,dndpt_func1/dndpt_func2));
1687 return dndpt_func1/dndpt_func2;
1697 Double_t denom = TMath::Power((pt/par[1]), par[3] );
1698 Double_t dNdpt = par[0]*pt/TMath::Power(1.+denom, par[2]);
1710 Double_t weight = 0.0;
1713 if( (histobin>0) && (histobin<=histoNbins) ) {
1726 if(runnumber>146824 || runnumber<146803)
return 1.0;
1728 Double_t func1[3] = {1.0, -0.5, 6.5 };
1729 Double_t func2[3] = {1.0, -0.5, 5.5 };
1731 Double_t dzFunc1 =
DodzFit(z,func1);
1732 Double_t dzFunc2 =
DodzFit(z,func2);
1734 return dzFunc1/dzFunc2;
1745 Double_t value = par[0]/TMath::Sqrt(2.*TMath::Pi())/par[2]*TMath::Exp(-(z-par[1])*(z-par[1])/2./par[2]/par[2]);
1754 if(nch<=0)
return 0.;
1758 Double_t weight = pMC>0 ? pMeas/pMC : 0.;
1771 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1772 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1773 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1774 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1775 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1776 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1777 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1778 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1780 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1781 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1782 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1783 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1784 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1785 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1786 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1787 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1792 for(Int_t i=0; i<81; i++){
1802 if(recoAnalysisCuts > 0){
1803 Int_t isKKpi=recoAnalysisCuts&1;
1804 Int_t ispiKK=recoAnalysisCuts&2;
1805 Int_t isPhiKKpi=recoAnalysisCuts&4;
1806 Int_t isPhipiKK=recoAnalysisCuts&8;
1807 Int_t isK0starKKpi=recoAnalysisCuts&16;
1808 Int_t isK0starpiKK=recoAnalysisCuts&32;
1810 if(isKKpi && isPhiKKpi) keep=kTRUE;
1811 if(ispiKK && isPhipiKK) keep=kTRUE;
1814 if(isKKpi && isK0starKKpi) keep=kTRUE;
1815 if(ispiKK && isK0starpiKK) keep=kTRUE;
1825 if(recoAnalysisCuts > 0){
1827 Int_t isK0Sp = recoAnalysisCuts&1;
1828 Int_t isLambdaBarpi = recoAnalysisCuts&2;
1829 Int_t isLambdapi = recoAnalysisCuts&4;
1832 if(isK0Sp) keep=kTRUE;
1835 if(isLambdaBarpi) keep=kTRUE;
1838 if(isLambdapi) keep=kTRUE;
1841 if (isK0Sp || isLambdaBarpi || isLambdapi) keep=kTRUE;
1854 Int_t runNo =
event->GetRunNumber();
1859 if (runNo>195343 && runNo<195484) period = 0;
1860 if (runNo>195528 && runNo<195678) period = 1;
1861 if (period<0 || period>1)
return 0;
1863 if(runNo>114930 && runNo<117223) period = 0;
1864 if(runNo>119158 && runNo<120830) period = 1;
1865 if(runNo>122373 && runNo<126438) period = 2;
1866 if(runNo>127711 && runNo<130841) period = 3;
1867 if(period<0 || period>3)
return 0;
void SetPtWeightsFromFONLL5overLHC13d3()
Int_t fNvar
flag to use directly the ratio of the distributions (fHistoMCNch) instead of computing it ...
void SetCentralityValue(Float_t centValue)
Bool_t fAcceptanceUnf
flag to select D0 origins. 0 Only from charm 1 only from beauty 2 both from charm and beauty ...
virtual AliESDtrackCuts * GetTrackCutsV0daughters() const
void SetFillFromGenerated(Bool_t flag)
Bool_t fRejectIfNoQuark
selection flag for fakes tracks
Int_t fCountRecoAcc
Reco particle found that satisfy cuts.
void SetPtWeightsFromDataPbPb276overLHC12a17a()
virtual AliESDtrackCuts * GetTrackCutsSoftPi() const
Bool_t fFillFromGenerated
decay channel to configure the task
Int_t MCcquarkCounting(AliAODMCParticle *mcPart) const
UShort_t fOriginDselection
flag to indicate whether data container should be filled with generated values also for reconstructed...
Bool_t fUseFlatPtWeight
weight used to fill the container
void Terminate(Option_t *)
void SetPtWeightsFromFONLL7overLHC12a12bis()
Class for HF corrections as a function of many variables and steps For D* and other cascades...
Int_t IsEventSelectedInCentrality(AliVEvent *event)
Bool_t HasSelectionBit(Int_t i) const
Class for HF corrections as a function of many variables and step.
Bool_t fIsPPData
flag to use the z-vtx corrected (if not use uncorrected) multiplicity estimator
AliHFsubtractBFDcuts * fObjSpr
cut on momentum conservation
Bool_t FillRecoContainer(Double_t *containerInput)
Double_t fWeight
flag to decide whether to use pt-weights != 1 when filling the container or not
void UnsetOwnPrimaryVtx()
Int_t fConfiguration
Ds decay option (generation level)
void SetPtWeightsFromFONLL7overLHC12a12()
void SetPtWeightsFromFONLL7overLHC13e2fix()
void SetPtWeightsFromFONLL5overLHC10f6a()
THnSparseF * GetSparseMC() const
Int_t fCountRecoITSClusters
Reco particle found that satisfy cuts in requested acceptance.
Bool_t fIsPPbData
flag for pp data (not checking centrality)
Double_t dNdptFit(Float_t pt, Double_t *par)
void SetRejectCandidateIfNotFromQuark(Bool_t opt)
Double_t GetNchWeight(Int_t nch)
virtual Bool_t SetLabelArray()
void FillSparses(AliAODRecoDecayHF2Prong *dzeroPart, Int_t isSelected, Double_t pt=-1, Double_t massD0=-1, Double_t massD0bar=-1, Double_t weight=1., TClonesArray *mcArray=0x0, AliAODEvent *aodEvent=0x0)
Double_t GetPtWeightFromHistogram(Float_t pt)
Bool_t fCentralitySelection
flag to decide wheter to keep D0 only (0), D0bar only (1), or both D0 and D0bar (2) ...
Double_t InvMassD0() const
UInt_t fPDGcode
flag to use selection bit
void SetPtWeightsFromFONLL276overLHC12a17a()
Bool_t fUseMCVertex
flag to remove events not geenrated with PYTHIA
slow configuration, all variables
void UserExec(Option_t *option)
TH1F * fHistoMCNch
histogram with measured Nch distribution (pp 7 TeV)
Double_t GetMaxVtxZ() const
void SetFillMC(Bool_t fillMC=kTRUE)
Int_t fDecayChannel
n. of events
void SetPtWeightsFromFONLL276overLHC12a17b()
Int_t fCountMC
list of profile histos for z-vtx correction
TString fDauNames
D meson name.
AliCFTaskVertexingHFCutVarFDSub()
multiplicity estimators
TH1F * fHistoMeasNch
user-defined histogram to calculate the Pt weights
Double_t GetWeight(Float_t pt)
TH3F * GetHistoPtMCgen() const
TH1F * fHistoPtWeight
user-defined function to be used to calculate weights
Class for cuts on AOD reconstructed D+->Kpipi.
TF1 * fFuncWeight
configuration (slow / fast) of the CF –> different variables will be allocated (all / reduced number)...
TH1F * fhBptCutVar
Generator level histogram D0 pt, Nprongs of the decay, Mother pt.
static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent *ev, Double_t mineta, Double_t maxeta)
Int_t fCountReco
Reco particle found that satisfy kTPCrefit and kITSrefit.
void FillGenStep(AliAODMCParticle *dzeroMC, Double_t pt=-1, Double_t weight=1., TClonesArray *mcArray=0x0)
Bool_t ProcessDs(Int_t returnCodeDs) const
void SetMinCentrality(Float_t minCentrality=0.)
Bool_t fUseAdditionalCuts
flag for pPb data (used for multiplicity corrections)
Bool_t fUseMultRatioAsWeight
flag to decide whether to use Ncharged weights != 1 when filling the container or not ...
Int_t fGenLctoV0bachelorOption
Lc->V0+bachelor decay option (selection level)
Bool_t fUseTrackletsWeight
flag to decide whether to use Ncharged weights != 1 when filling the container or not ...
Int_t fEvents
Reco PID step.
Double_t DodzFit(Float_t z, Double_t *par)
AliAODVertex * GetOwnPrimaryVtx() const
Int_t fMultiplicityEstimator
PDG code.
AliESDtrackCuts * GetTrackCuts() const
AliCFManager * fCFManager
Float_t GetCentrality(AliAODEvent *aodEvent)
TList * GetDecayStrings()
Int_t fLctoV0bachelorOption
resonant deacy channel to be used if the CF should be run on resonant channels only ...
Double_t InvMassD0bar() const
void SetFakeSelection(Int_t fakeSel)
Bool_t fUseSelectionBit
Lc->V0+bachelor decay option (generation level)
Bool_t fZvtxCorrectedNtrkEstimator
refrence multiplcity (period b)
Int_t fCountRefit
Reco particle found that satisfy vertex constrained.
Double_t fRefMult
TProfile with mult vas. Z per period.
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
void SetMaxCentrality(Float_t maxCentrality=100.)
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
void SetRecoPrimVertex(Double_t zPrimVertex)
Double_t GetZWeight(Float_t z, Int_t runnumber)
TList * fQAHists
List with B hadron decays (unique entries)
virtual ~AliCFTaskVertexingHFCutVarFDSub()
void SetMCCandidateParam(Int_t label)
TH1I * fHistEventsProcessed
pointer to the CF manager
Int_t fCountRecoPPR
Reco particle found that satisfy cuts in n. of ITS clusters.
Bool_t CheckMCPartFamily(AliAODMCParticle *, TClonesArray *) const
THnSparseF * fhSparseCutVar
object for cut variation study
Bool_t fUseCutsForTMVA
flag to use additional cuts needed for Lc –> K0S + p, TMVA
virtual Bool_t SetRecoCandidateParam(AliAODRecoDecayHF *)
static Double_t GetCorrectedNtracklets(TProfile *estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult)
Int_t CheckReflexion(Char_t isSign)
Bool_t IsEventSelected(AliVEvent *event)
Bool_t fUseZWeight
flag to decide to use a flat pt shape
void SetUsePID(Bool_t flag=kTRUE)
Char_t fSign
daughter in fin state
virtual void PrintAll() const
AliCFTaskVertexingHFCutVarFDSub & operator=(const AliCFTaskVertexingHFCutVarFDSub &c)
void CreateMeasuredNchHisto()
Bool_t RecoAcceptStep(AliESDtrackCuts **trackCuts) const
Int_t fCountAcc
MC particle found.
TList * fListProfiles
response matrix for unfolding
static Int_t GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray *arrayMC, Double_t mineta, Double_t maxeta)
Bool_t IsSelected(TObject *obj)
TProfile * fMultEstimatorAvg[4]
Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2.
Bool_t MCRefitStep(AliAODEvent *aodEvent, AliESDtrackCuts **trackCuts) const
Int_t fFakeSelection
flag to switch off the centrality selection
Bool_t GetIsUsePID() const
UInt_t fResonantDecay
histogram with Nch distribution from MC production
Float_t fCutOnMomConservation
flag to define which task to use for Lc –> K0S+p
AliRDHFCuts * fCuts
flag for unfolding before or after cuts.
void SetTriggerClass(TString trclass0, TString trclass1="")
Bool_t fUseCascadeTaskForLctoV0bachelor
Class to compute variables for correction framework // for 3-body decays of D mesons (D+...
virtual Bool_t IsInFiducialAcceptance(Double_t, Double_t) const
void SetPtWeightsFromFONLL276andBAMPSoverLHC12a17b()
TProfile * GetEstimatorHistogram(const AliVEvent *event)
void SetConfiguration(Int_t configuration)
void SetMultiplicity(Double_t multiplicity)
Int_t fGenDsOption
Ds decay option (selection level)
void SetMCPrimaryVertex(Double_t zMCVertex)
Int_t fCountRecoPID
Reco particle found that satisfy cuts in PPR.
void SetPtWeightsFromFONLL276overLHC10f6a()
Int_t fDsOption
flag to use MC vertex (useful when runnign in pp)
void UserCreateOutputObjects()
ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects.
Bool_t ProcessLctoV0Bachelor(Int_t returnCodeDs) const
TList * fListBdecays
B0 pt spectrum.
TString fPartName
number of variables for the container
void SetPtWeightsFromFONLL7overLHC10f6a()
Class for HF corrections as a function of many variables and step.
Int_t fCountVertex
MC particle found that satisfy acceptance cuts.