33 #include <TParticle.h>
34 #include <TDatabasePDG.h>
43 #include "AliMCEvent.h"
44 #include "AliCFManager.h"
45 #include "AliCFContainer.h"
47 #include "AliInputEventHandler.h"
48 #include "AliAnalysisManager.h"
49 #include "AliAODHandler.h"
50 #include "AliAODEvent.h"
51 #include "AliAODRecoDecay.h"
57 #include "AliAODMCParticle.h"
58 #include "AliAODMCHeader.h"
59 #include "AliESDtrack.h"
61 #include "THnSparse.h"
63 #include "AliESDtrackCuts.h"
78 #include "AliAnalysisDataSlot.h"
79 #include "AliAnalysisDataContainer.h"
81 #include "AliPIDResponse.h"
87 fHistEventsProcessed(0x0),
92 fCountGenLimAccNoAcc(0),
98 fCountRecoITSClusters(0),
103 fFillFromGenerated(kFALSE),
104 fOriginDselection(0),
105 fAcceptanceUnf(kTRUE),
109 fUseFlatPtWeight(kFALSE),
111 fUseNchWeight(kFALSE),
112 fUseTrackletsWeight(kFALSE),
113 fUseMultRatioAsWeight(kFALSE),
118 fCentralitySelection(kTRUE),
120 fRejectIfNoQuark(kTRUE),
121 fUseMCVertex(kFALSE),
124 fConfiguration(kCheetah),
130 fLctoV0bachelorOption(1),
131 fGenLctoV0bachelorOption(0),
132 fUseSelectionBit(kTRUE),
134 fMultiplicityEstimator(kNtrk10),
136 fZvtxCorrectedNtrkEstimator(kFALSE),
139 fUseAdditionalCuts(kFALSE),
140 fUseCutsForTMVA(kFALSE),
141 fUseCascadeTaskForLctoV0bachelor(kFALSE),
142 fCutOnMomConservation(0.00001)
151 AliAnalysisTaskSE(name),
153 fHistEventsProcessed(0x0),
158 fCountGenLimAccNoAcc(0),
164 fCountRecoITSClusters(0),
169 fFillFromGenerated(kFALSE),
170 fOriginDselection(0),
171 fAcceptanceUnf(kTRUE),
175 fUseFlatPtWeight(kFALSE),
177 fUseNchWeight(kFALSE),
178 fUseTrackletsWeight(kFALSE),
179 fUseMultRatioAsWeight(kFALSE),
184 fCentralitySelection(kTRUE),
186 fRejectIfNoQuark(kTRUE),
187 fUseMCVertex(kFALSE),
190 fConfiguration(kCheetah),
196 fLctoV0bachelorOption(1),
197 fGenLctoV0bachelorOption(0),
198 fUseSelectionBit(kTRUE),
200 fMultiplicityEstimator(kNtrk10),
202 fZvtxCorrectedNtrkEstimator(kFALSE),
205 fUseAdditionalCuts(kFALSE),
206 fUseCutsForTMVA(kFALSE),
207 fUseCascadeTaskForLctoV0bachelor(kFALSE),
208 fCutOnMomConservation(0.00001)
217 DefineOutput(1,TH1I::Class());
218 DefineOutput(2,AliCFContainer::Class());
219 DefineOutput(3,THnSparseD::Class());
220 DefineOutput(4,AliRDHFCuts::Class());
222 DefineOutput(5,TList::Class());
234 AliAnalysisTaskSE::operator=(c) ;
249 AliAnalysisTaskSE(c),
250 fCFManager(c.fCFManager),
251 fHistEventsProcessed(c.fHistEventsProcessed),
252 fCorrelation(c.fCorrelation),
253 fListProfiles(c.fListProfiles),
254 fCountMC(c.fCountMC),
255 fCountGenLimAcc(c.fCountGenLimAcc),
256 fCountGenLimAccNoAcc(c.fCountGenLimAccNoAcc),
257 fCountAcc(c.fCountAcc),
258 fCountVertex(c.fCountVertex),
259 fCountRefit(c.fCountRefit),
260 fCountReco(c.fCountReco),
261 fCountRecoAcc(c.fCountRecoAcc),
262 fCountRecoITSClusters(c.fCountRecoITSClusters),
263 fCountRecoPPR(c.fCountRecoPPR),
264 fCountRecoPID(c.fCountRecoPID),
266 fDecayChannel(c.fDecayChannel),
267 fFillFromGenerated(c.fFillFromGenerated),
268 fOriginDselection(c.fOriginDselection),
269 fAcceptanceUnf(c.fAcceptanceUnf),
271 fUseWeight(c.fUseWeight),
273 fUseFlatPtWeight(c.fUseFlatPtWeight),
274 fUseZWeight(c.fUseZWeight),
275 fUseNchWeight(c.fUseNchWeight),
276 fUseTrackletsWeight(c.fUseTrackletsWeight),
277 fUseMultRatioAsWeight(c.fUseMultRatioAsWeight),
279 fPartName(c.fPartName),
280 fDauNames(c.fDauNames),
282 fCentralitySelection(c.fCentralitySelection),
283 fFakeSelection(c.fFakeSelection),
284 fRejectIfNoQuark(c.fRejectIfNoQuark),
285 fUseMCVertex(c.fUseMCVertex),
286 fDsOption(c.fDsOption),
287 fGenDsOption(c.fGenDsOption),
288 fConfiguration(c.fConfiguration),
289 fFuncWeight(c.fFuncWeight),
290 fHistoPtWeight(c.fHistoPtWeight),
291 fHistoMeasNch(c.fHistoMeasNch),
292 fHistoMCNch(c.fHistoMCNch),
293 fResonantDecay(c.fResonantDecay),
294 fLctoV0bachelorOption(c.fLctoV0bachelorOption),
295 fGenLctoV0bachelorOption(c.fGenLctoV0bachelorOption),
296 fUseSelectionBit(c.fUseSelectionBit),
297 fPDGcode(c.fPDGcode),
298 fMultiplicityEstimator(c.fMultiplicityEstimator),
299 fRefMult(c.fRefMult),
300 fZvtxCorrectedNtrkEstimator(c.fZvtxCorrectedNtrkEstimator),
301 fIsPPData(c.fIsPPData),
302 fIsPPbData(c.fIsPPbData),
303 fUseAdditionalCuts(c.fUseAdditionalCuts),
304 fUseCutsForTMVA(c.fUseCutsForTMVA),
305 fUseCascadeTaskForLctoV0bachelor(c.fUseCascadeTaskForLctoV0bachelor),
306 fCutOnMomConservation(c.fCutOnMomConservation)
339 if (fDebug>1) printf(
"AliCFTaskVertexingHF::Init()");
340 if(
fUseWeight &&
fUseZWeight) { AliFatal(
"Can not use at the same time pt and z-vtx weights, please choose");
return; }
341 if(
fUseWeight &&
fUseNchWeight) { AliInfo(
"Beware, using at the same time pt and Nch weights, please check"); }
347 AliFatal(
"No cuts defined - Exiting...");
458 AliFatal(
"The decay channel MUST be defined according to AliCFVertexing::DecayChannel - Exiting...");
462 const char* nameoutput=GetOutputSlot(4)->GetContainer()->GetName();
464 copyfCuts->SetName(nameoutput);
467 PostData(4, copyfCuts);
470 AliFatal(
"Failing initializing AliRDHFCuts object - Exiting...");
479 period[0] =
"LHC13b"; period[1] =
"LHC13c";
482 period[0] =
"LHC10b"; period[1] =
"LHC10c"; period[2] =
"LHC10d"; period[3] =
"LHC10e";
486 for(Int_t i=0; i<nProfiles; i++){
489 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
513 PostData(2,
fCFManager->GetParticleContainer()) ;
516 AliDebug(3,Form(
"*** Processing event %d\n",
fEvents));
519 AliWarning(
"Flag to fill container with generated value ON ---> dca, d0pi, d0K, d0xd0, cosPointingAngle will be set as dummy!");
523 Error(
"UserExec",
"NO EVENT FOUND!");
527 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
529 TClonesArray *arrayBranch=0;
531 if(!aodEvent && AODEvent() && IsStandardAOD()) {
534 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
537 AliAODHandler* aodHandler = (AliAODHandler*)
538 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
539 if(aodHandler->GetExtensions()) {
540 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
541 AliAODEvent *aodFromExt = ext->GetAOD();
545 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
549 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
553 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"CascadesHF");
559 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
563 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm4Prong");
574 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"D0toKpi");
578 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
582 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"CascadesHF");
588 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Charm3Prong");
592 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Charm4Prong");
600 AliAODVertex *aodVtx = (AliAODVertex*)aodEvent->GetPrimaryVertex();
602 AliDebug(3,
"The event was skipped due to missing vertex");
607 AliError(
"Could not find array of HF vertices");
620 TClonesArray* mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
622 AliError(
"Could not find Monte-Carlo in AOD");
626 Int_t icountGenLimAcc = 0;
627 Int_t icountGenLimAccNoAcc = 0;
629 Int_t icountReco = 0;
630 Int_t icountVertex = 0;
631 Int_t icountRefit = 0;
632 Int_t icountRecoAcc = 0;
633 Int_t icountRecoITSClusters = 0;
634 Int_t icountRecoPPR = 0;
635 Int_t icountRecoPID = 0;
638 AliAODMCHeader *mcHeader =
dynamic_cast<AliAODMCHeader*
>(aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
640 AliError(
"Could not find MC Header in AOD");
646 Double_t* containerInput =
new Double_t[
fNvar];
647 Double_t* containerInputMC =
new Double_t[
fNvar];
706 AliError(
"No AliCFVertexingHF initialized");
707 delete[] containerInput;
708 delete[] containerInputMC;
712 Double_t zPrimVertex = aodVtx ->GetZ();
713 Double_t zMCVertex = mcHeader->GetVtxZ();
714 Int_t runnumber = aodEvent->GetRunNumber();
717 Double_t nTracklets = 0;
720 nTracklets = (Double_t)nTrackletsEta10;
729 nTracklets = (Double_t)nTrackletsEta10Corr;
741 AliDebug(2,Form(
"Using Nch weights, Mult=%d Weight=%f\n",nChargedMCPhysicalPrimary,
fWeight));
746 AliDebug(3,Form(
"z coordinate of MC vertex = %f, it was required to be within [-%f, +%f], skipping event", zMCVertex,
fCuts->
GetMaxVtxZ(),
fCuts->
GetMaxVtxZ()));
747 delete[] containerInput;
748 delete[] containerInputMC;
753 if(aodEvent->GetTriggerMask()==0 &&
754 (runnumber>=195344 && runnumber<=195677)){
755 AliDebug(3,
"Event rejected because of null trigger mask");
756 delete[] containerInput;
757 delete[] containerInputMC;
762 AliESDtrackCuts** trackCuts =
new AliESDtrackCuts*[cfVtxHF->
GetNProngs()];
765 for (Int_t iProng = 0; iProng<cfVtxHF->
GetNProngs()-1; iProng++){
777 for (Int_t iProng = 0; iProng<cfVtxHF->
GetNProngs(); iProng++){
800 delete[] containerInput;
801 delete[] containerInputMC;
811 Float_t centValue = 0.;
816 Double_t vzeroMult=0;
817 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aodEvent->GetVZEROData();
818 if(vzeroAOD) vzeroMult = vzeroAOD->GetMTotV0A() + vzeroAOD->GetMTotV0C();
820 Double_t multiplicity = nTracklets;
827 for (Int_t iPart=0; iPart<mcArray->GetEntriesFast(); iPart++) {
828 AliAODMCParticle* mcPart =
dynamic_cast<AliAODMCParticle*
>(mcArray->At(iPart));
830 AliError(
"Failed casting particle from MC array!, Skipping particle");
838 if (!
fCFManager->CheckParticleCuts(0, mcPart)) {
839 AliDebug(2,
"Check the MC-level cuts - not desidered particle");
843 AliDebug(3, Form(
"\n\n---> COOL! we found a particle (particle %d)!!! with PDG code = %d \n\n", iPart, mcPart->GetPdgCode()));
849 AliDebug(2,Form(
"Impossible to set the label array for particle %d (decaychannel = %d)", iPart,
fDecayChannel));
855 AliDebug(2,Form(
"Check on the family wrong for particle %d!!! (decaychannel = %d)", iPart,
fDecayChannel));
859 AliDebug(2,Form(
"Check on the family OK for particle %d!!! (decaychannel = %d)", iPart,
fDecayChannel));
863 Bool_t mcContainerFilled = cfVtxHF -> FillMCContainer(containerInputMC);
864 AliDebug(2, Form(
"particle = %d mcContainerFilled = %d", iPart, mcContainerFilled));
865 if (mcContainerFilled) {
868 AliDebug(2,
"Using Histogram as Pt weight function");
872 AliDebug(2,
"Using function");
876 AliDebug(2,
"Using FONLL");
879 AliDebug(2,Form(
"pt = %f, weight = %f",containerInputMC[0],
fWeight));
882 AliDebug(3, Form(
"Not in limited acceptance, containerInputMC[0] = %f, containerInputMC[1] = %f", containerInputMC[0], containerInputMC[1]));
886 AliDebug(3, Form(
"YES!! in limited acceptance, containerInputMC[0] = %f, containerInputMC[1] = %f", containerInputMC[0],containerInputMC[1]));
890 if (TMath::Abs(containerInputMC[1]) < 0.5) {
893 AliDebug(3,
"MC Lim Acc container filled\n");
895 if (!(cfVtxHF-> MCAcceptanceStep())) {
897 icountGenLimAccNoAcc++;
898 AliDebug(3,
"MC Lim Acc No Acc container filled\n");
906 AliDebug(3,
"MC container filled \n");
911 Bool_t mcAccepStep = cfVtxHF-> MCAcceptanceStep();
914 AliDebug(3,
"MC acceptance cut passed\n");
921 AliDebug(3,
"Vertex cut passed and container filled\n");
925 Bool_t mcRefitStep = cfVtxHF->
MCRefitStep(aodEvent, &trackCuts[0]);
928 AliDebug(3,
"MC Refit cut passed and container filled\n");
932 AliDebug(3,
"MC Refit cut not passed\n");
937 AliDebug (3,
"MC vertex step not passed\n");
942 AliDebug (3,
"MC in acceptance step not passed\n");
947 AliDebug (3,
"MC container not filled\n");
951 if (cquarks<2) AliDebug(2,Form(
"Event with %d c-quarks", cquarks));
952 AliDebug(2,Form(
"Found %i MC particles that are %s!!",icountMC,
fPartName.Data()));
953 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Acc cuts!!",icountAcc,
fPartName.Data()));
954 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Vertex cuts!!",icountVertex,
fPartName.Data()));
955 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Refit cuts!!",icountRefit,
fPartName.Data()));
965 AliDebug(2,Form(
"Found %d vertices for decay channel %d",arrayBranch->GetEntriesFast(),
fDecayChannel));
968 for(Int_t iCandid = 0; iCandid<arrayBranch->GetEntriesFast();iCandid++){
1001 Bool_t unsetvtx=kFALSE;
1008 if (!signAssociation){
1014 if (isPartOrAntipart == 0){
1015 AliDebug(2, Form(
"The candidate pdg code doesn't match the requirement set in the task (fSign = %d)",
fSign));
1020 AliDebug(3,Form(
"iCandid=%d - signAssociation=%d, isPartOrAntipart=%d",iCandid, signAssociation, isPartOrAntipart));
1023 AliDebug(3, Form(
"CF task: RecoContFilled for candidate %d is %d", iCandid, (Int_t)recoContFilled));
1024 if (recoContFilled){
1029 AliDebug(2,
"Using Histogram as Pt weight function");
1033 AliDebug(2,
"Using function");
1037 AliDebug(2,
"Using FONLL");
1040 AliDebug(2, Form(
"pt = %f, weight = %f",containerInput[0],
fWeight));
1048 Bool_t recoStep = cfVtxHF->
RecoStep();
1049 if (recoStep) AliDebug(2, Form(
"particle = %d --> CF task: Reco step for candidate %d is %d", iCandid, iCandid, (Int_t)recoStep));
1054 Bool_t isBitSelected = kTRUE;
1070 if (recoStep && recoContFilled && vtxCheck){
1073 AliDebug(3,
"Reco step passed and container filled\n");
1076 Bool_t recoAcceptanceStep = cfVtxHF->
RecoAcceptStep(&trackCuts[0]);
1077 if (recoAcceptanceStep) {
1080 AliDebug(3,
"Reco acceptance cut passed and container filled\n");
1084 Bool_t bUnfolding = cfVtxHF -> FillUnfoldingMatrix(
fPDGcode,fill);
1090 if (recoITSnCluster){
1092 icountRecoITSClusters++;
1093 AliDebug(3,
"Reco n ITS cluster cut passed and container filled\n");
1096 Int_t recoAnalysisCuts = -1, recoPidSelection = -1;
1101 Bool_t keepDs=
ProcessDs(recoAnalysisCuts);
1102 if(keepDs) recoAnalysisCuts=3;
1106 if (keepLctoV0bachelor) recoAnalysisCuts=3;
1107 AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
1108 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
1109 AliPIDResponse* pidResponse = inputHandler->GetPIDResponse();
1116 Bool_t tempAn=(recoAnalysisCuts == 3 || recoAnalysisCuts == isPartOrAntipart);
1118 if (
fDecayChannel == 32) tempAn=(recoAnalysisCuts >0 || recoAnalysisCuts == isPartOrAntipart);
1123 AliDebug(3,
"Reco Analysis cuts passed and container filled \n");
1130 Bool_t keepDs=
ProcessDs(recoPidSelection);
1131 if(keepDs) recoPidSelection=3;
1134 if (keepLctoV0bachelor) recoPidSelection=3;
1137 Bool_t tempPid=(recoPidSelection == 3 || recoPidSelection == isPartOrAntipart);
1139 if (
fDecayChannel == 32) tempPid=(recoPidSelection >0 || recoPidSelection == isPartOrAntipart);
1142 Double_t weigPID = 1.;
1145 if (isPartOrAntipart == 1){
1147 }
else if (isPartOrAntipart == 2){
1150 if ((weigPID < 0) || (weigPID > 1)) weigPID = 0.;
1154 Int_t labDau0=((AliAODTrack*)charmCandidate->GetDaughter(0))->GetLabel();
1155 AliAODMCParticle* firstDau=(AliAODMCParticle*)mcArray->UncheckedAt(TMath::Abs(labDau0));
1157 Int_t pdgCode0=TMath::Abs(firstDau->GetPdgCode());
1160 }
else if(pdgCode0==211){
1163 if ((weigPID < 0) || (weigPID > 1)) weigPID = 0.;
1171 AliDebug(3,
"Reco PID cuts passed and container filled \n");
1174 Bool_t bUnfolding = cfVtxHF -> FillUnfoldingMatrix(
fPDGcode,fill);
1179 AliDebug(3,
"Analysis Cuts step not passed \n");
1185 AliDebug(3,
"PID selection not passed \n");
1191 AliDebug(3,
"Number of ITS cluster step not passed\n");
1197 AliDebug(3,
"Reco acceptance step not passed\n");
1203 AliDebug(3,
"Reco step not passed\n");
1220 delete[] containerInput;
1221 delete[] containerInputMC;
1227 delete [] trackCuts;
1240 AliAnalysisTaskSE::Terminate();
1245 AliInfo(Form(
"Found %i MC particles that are %s in MC and satisfy Acc cuts, in %d events",
fCountAcc,
fPartName.Data(),
fEvents));
1246 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));
1247 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));
1255 AliCFContainer *cont=
dynamic_cast<AliCFContainer*
> (GetOutputData(2));
1257 printf(
"CONTAINER NOT FOUND\n");
1263 TH1D** h =
new TH1D*[3];
1264 Int_t nvarToPlot = 0;
1267 for (Int_t ih = 0; ih<3; ih++){
1273 h[ih] =
new TH1D[nvarToPlot];
1275 for(Int_t iC=1;iC<nvarToPlot; iC++){
1277 h[0][iC] = *(cont->ShowProjection(iC,0));
1279 h[1][iC] = *(cont->ShowProjection(iC,1));
1281 h[2][iC] = *(cont->ShowProjection(iC,4));
1287 for (Int_t ih = 0; ih<3; ih++){
1288 h[ih] =
new TH1D[nvarToPlot];
1290 for(Int_t iC=0;iC<nvarToPlot; iC++){
1292 h[0][iC] = *(cont->ShowProjection(iC,0));
1294 h[1][iC] = *(cont->ShowProjection(iC,1));
1296 h[2][iC] = *(cont->ShowProjection(iC,4));
1304 titles =
new TString[nvarToPlot];
1305 titles[0]=
"pT_Dplus (GeV/c)";
1306 titles[1]=
"rapidity";
1307 titles[2]=
"phi (rad)";
1308 titles[3]=
"cT (#mum)";
1309 titles[4]=
"cosPointingAngle";
1310 titles[5]=
"pT_1 (GeV/c)";
1311 titles[6]=
"pT_2 (GeV/c)";
1312 titles[7]=
"pT_3 (GeV/c)";
1313 titles[8]=
"d0_1 (#mum)";
1314 titles[9]=
"d0_2 (#mum)";
1315 titles[10]=
"d0_3 (#mum)";
1316 titles[11]=
"zVertex (cm)";
1319 titles =
new TString[nvarToPlot];
1320 titles[0]=
"p_{T}(#Lambda_{c}) [GeV/c]";
1321 titles[1]=
"y(#Lambda_{c})";
1322 titles[2]=
"#varphi(#Lambda_{c}) [rad]";
1323 titles[3]=
"onTheFlyStatusV0";
1324 titles[4]=
"z_{vtx} [cm]";
1325 titles[5]=
"centrality";
1327 titles[7]=
"multiplicity";
1329 titles[8]=
"p(bachelor) [GeV/c]";
1330 titles[9]=
"p_{T}(V0) [GeV/c]";
1332 titles[11]=
"#varphi(V0) [rad]";
1333 titles[12]=
"m_{inv}(#pi^{+}#pi^{+}) [GeV/c^{2}]";
1334 titles[13]=
"dcaV0 (nSigma)";
1335 titles[14]=
"cosine pointing angle (V0)";
1336 titles[15]=
"cosine pointing angle (#Lambda_{c})";
1341 titles =
new TString[nvarToPlot];
1342 titles[0]=
"pT_D0 (GeV/c)";
1343 titles[1]=
"rapidity";
1344 titles[2]=
"cosThetaStar";
1345 titles[3]=
"pT_pi (GeV/c)";
1346 titles[4]=
"pT_K (Gev/c)";
1347 titles[5]=
"cT (#mum)";
1348 titles[6]=
"dca (#mum)";
1349 titles[7]=
"d0_pi (#mum)";
1350 titles[8]=
"d0_K (#mum)";
1351 titles[9]=
"d0xd0 (#mum^2)";
1352 titles[10]=
"cosPointingAngle";
1353 titles[11]=
"phi (rad)";
1358 titles =
new TString[nvarToPlot];
1360 titles[0]=
"p_{T}(#Lambda_{c}) [GeV/c]";
1361 titles[1]=
"y(#Lambda_{c})";
1362 titles[2]=
"#varphi(#Lambda_{c}) [rad]";
1363 titles[3]=
"onTheFlyStatusV0";
1364 titles[4]=
"z_{vtx} [cm]";
1365 titles[5]=
"centrality";
1367 titles[7]=
"multiplicity";
1369 titles[0]=
"pT_candidate (GeV/c)";
1370 titles[1]=
"rapidity";
1371 titles[2]=
"cT (#mum)";
1373 titles[4]=
"z_{vtx}";
1374 titles[5]=
"centrality";
1376 titles[7]=
"multiplicity";
1380 Int_t markers[16]={20,24,21,25,27,28,
1383 Int_t colors[3]={2,8,4};
1384 for(Int_t iC=0;iC<nvarToPlot; iC++){
1385 for(Int_t iStep=0;iStep<3;iStep++){
1386 h[iStep][iC].SetTitle(titles[iC].
Data());
1387 h[iStep][iC].GetXaxis()->SetTitle(titles[iC].
Data());
1388 Double_t maxh=h[iStep][iC].GetMaximum();
1389 h[iStep][iC].GetYaxis()->SetRangeUser(0,maxh*1.2);
1390 h[iStep][iC].SetMarkerStyle(markers[iC]);
1391 h[iStep][iC].SetMarkerColor(colors[iStep]);
1395 gStyle->SetCanvasColor(0);
1396 gStyle->SetFrameFillColor(0);
1397 gStyle->SetTitleFillColor(0);
1398 gStyle->SetStatColor(0);
1401 TCanvas * c1 =
new TCanvas(Form(
"c1New_%d",
fDecayChannel),
"Vars 0, 1, 2, 3",1100,1200);
1404 for(Int_t iVar=0; iVar<4; iVar++){
1406 h[0][iVar].DrawCopy(
"p");
1408 h[1][iVar].DrawCopy(
"p");
1410 h[2][iVar].DrawCopy(
"p");
1413 TCanvas * c2 =
new TCanvas(Form(
"c2New_%d",
fDecayChannel),
"Vars 4, 5, 6, 7",1100,1200);
1416 for(Int_t iVar=4; iVar<8; iVar++){
1418 h[0][iVar].DrawCopy(
"p");
1420 h[1][iVar].DrawCopy(
"p");
1422 h[2][iVar].DrawCopy(
"p");
1426 TCanvas * c3 =
new TCanvas(Form(
"c3New_%d",
fDecayChannel),
"Vars 8, 9, 10, 11",1100,1200);
1429 for(Int_t iVar=8; iVar<12; iVar++){
1431 h[0][iVar].DrawCopy(
"p");
1433 h[1][iVar].DrawCopy(
"p");
1435 h[2][iVar].DrawCopy(
"p");
1438 TCanvas * c4 =
new TCanvas(Form(
"c4New_%d",
fDecayChannel),
"Vars 12, 13, 14, 15",1100,1200);
1441 for(Int_t iVar=12; iVar<16; iVar++){
1443 h[0][iVar].DrawCopy(
"p");
1445 h[1][iVar].DrawCopy(
"p");
1447 h[2][iVar].DrawCopy(
"p");
1465 TFile* file_projection =
new TFile(
"CFtaskHFprojectionNew.root",
"RECREATE");
1470 for(Int_t iC=0;iC<nvarToPlot; iC++){
1471 for(Int_t iStep=0;iStep<3;iStep++){
1472 h[iStep][iC].Write(Form(
"Step%d_%s",iStep,titles[iC].
Data()));
1475 file_projection->Close();
1476 for (Int_t ih = 0; ih<3; ih++)
delete [] h[ih];
1488 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
1492 const char* nameoutput=GetOutputSlot(1)->GetContainer()->GetName();
1498 PostData(2,
fCFManager->GetParticleContainer()) ;
1510 fFuncWeight=
new TF1(
"funcWeight",
"[0]+[1]*TMath::Exp(-[2]*x)",0.,50.);
1522 fFuncWeight=
new TF1(
"funcWeight",
"[0]+[1]/TMath::Power(x,[2])",0.05,50.);
1534 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.);
1535 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);
1545 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.);
1546 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);
1555 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.);
1556 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);
1565 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.);
1566 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);
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+[9])",0.15,50.);
1576 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);
1585 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.);
1586 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);
1595 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.);
1596 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);
1605 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.);
1606 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);
1615 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.);
1616 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);
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)",0.15,20.);
1627 fFuncWeight->SetParameters(5.94428e+01,1.63585e+01,9.65555e+00,6.71944e+00,8.88338e-02,2.40477e+00,-4.88649e-02,-6.78599e-01,-2.10951e-01);
1637 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)",1.,20.);
1638 fFuncWeight->SetParameters(2.11879e+02,3.73290e+00,2.01235e+01,1.41508e+00,1.06268e-01,1.86285e+00,-4.52956e-02,-9.90631e-01,-1.31615e+00);
1648 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)",1.,20.);
1649 fFuncWeight->SetParameters(2.84268e+02,2.18850e+01,2.36298e+01,7.46144e+00,1.69747e-01,1.66993e+00,-5.54726e-02,-1.53869e+00,-1.18404e+00);
1672 Double_t func1[4] = {0.322643,2.96275,2.30301,2.5};
1673 Double_t func2[4] = {0.36609,1.94635,1.40463,2.5};
1675 Double_t dndpt_func1 =
dNdptFit(pt,func1);
1677 Double_t dndpt_func2 =
dNdptFit(pt,func2);
1678 AliDebug(2,Form(
"pt = %f, FONLL = %f, Pythia = %f, ratio = %f",pt,dndpt_func1,dndpt_func2,dndpt_func1/dndpt_func2));
1679 return dndpt_func1/dndpt_func2;
1689 Double_t denom = TMath::Power((pt/par[1]), par[3] );
1690 Double_t dNdpt = par[0]*pt/TMath::Power(1.+denom, par[2]);
1702 Double_t weight = 0.0;
1705 if( (histobin>0) && (histobin<=histoNbins) ) {
1718 if(runnumber>146824 || runnumber<146803)
return 1.0;
1720 Double_t func1[3] = {1.0, -0.5, 6.5 };
1721 Double_t func2[3] = {1.0, -0.5, 5.5 };
1723 Double_t dzFunc1 =
DodzFit(z,func1);
1724 Double_t dzFunc2 =
DodzFit(z,func2);
1726 return dzFunc1/dzFunc2;
1737 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]);
1746 if(nch<=0)
return 0.;
1750 Double_t weight = pMC>0 ? pMeas/pMC : 0.;
1763 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1764 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1765 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1766 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1767 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1768 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1769 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1770 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1772 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1773 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1774 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1775 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1776 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1777 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1778 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1779 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1784 for(Int_t i=0; i<81; i++){
1794 if(recoAnalysisCuts > 0){
1795 Int_t isKKpi=recoAnalysisCuts&1;
1796 Int_t ispiKK=recoAnalysisCuts&2;
1797 Int_t isPhiKKpi=recoAnalysisCuts&4;
1798 Int_t isPhipiKK=recoAnalysisCuts&8;
1799 Int_t isK0starKKpi=recoAnalysisCuts&16;
1800 Int_t isK0starpiKK=recoAnalysisCuts&32;
1802 if(isKKpi && isPhiKKpi) keep=kTRUE;
1803 if(ispiKK && isPhipiKK) keep=kTRUE;
1806 if(isKKpi && isK0starKKpi) keep=kTRUE;
1807 if(ispiKK && isK0starpiKK) keep=kTRUE;
1820 if (recoAnalysisCuts > 0){
1822 Int_t isK0Sp = recoAnalysisCuts&1;
1823 Int_t isLambdaBarpi = recoAnalysisCuts&2;
1824 Int_t isLambdapi = recoAnalysisCuts&4;
1827 if(isK0Sp) keep=kTRUE;
1830 if(isLambdaBarpi) keep=kTRUE;
1833 if(isLambdapi) keep=kTRUE;
1836 if (isK0Sp || isLambdaBarpi || isLambdapi) keep=kTRUE;
1849 Int_t runNo =
event->GetRunNumber();
1854 if (runNo>195343 && runNo<195484) period = 0;
1855 if (runNo>195528 && runNo<195678) period = 1;
1856 if (period<0 || period>1)
return 0;
1858 if(runNo>114930 && runNo<117223) period = 0;
1859 if(runNo>119158 && runNo<120830) period = 1;
1860 if(runNo>122373 && runNo<126438) period = 2;
1861 if(runNo>127711 && runNo<130841) period = 3;
1862 if(period<0 || period>3)
return 0;
void SetCentralityValue(Float_t centValue)
virtual AliESDtrackCuts * GetTrackCutsV0daughters() const
void SetFillFromGenerated(Bool_t flag)
Double_t GetPtWeightFromHistogram(Float_t pt)
void Terminate(Option_t *)
Bool_t fUseAdditionalCuts
flag for pPb data (used for multiplicity corrections)
Bool_t fUseZWeight
flag to decide to use a flat pt shape
AliCFTaskVertexingHF & operator=(const AliCFTaskVertexingHF &c)
Bool_t fFillFromGenerated
decay channel to configure the task
Double_t GetWeight(Float_t pt)
virtual AliESDtrackCuts * GetTrackCutsSoftPi() const
Int_t fCountAcc
MC particle found in limited acceptance that doesn't satisfy acceptance cuts.
Int_t fCountRefit
Reco particle found that satisfy vertex constrained.
Int_t MCcquarkCounting(AliAODMCParticle *mcPart) const
void SetPtWeightsFromFONLL7overLHC12a12()
Class for HF corrections as a function of many variables and steps For D* and other cascades...
Int_t IsEventSelectedInCentrality(AliVEvent *event)
Int_t fCountReco
Reco particle found that satisfy kTPCrefit and kITSrefit.
Bool_t HasSelectionBit(Int_t i) const
UInt_t fPDGcode
flag to use selection bit
Class for HF corrections as a function of many variables and step.
Bool_t FillRecoContainer(Double_t *containerInput)
void UnsetOwnPrimaryVtx()
Int_t fCountGenLimAcc
MC particle found.
Bool_t fIsPPbData
flag for pp data (not checking centrality)
TH1F * fHistoPtWeight
user-defined function to be used to calculate weights
Bool_t fUseSelectionBit
Lc->V0+bachelor decay option (generation level)
AliCFTaskVertexingHF()
multiplicity estimators
Int_t fCountRecoITSClusters
Reco particle found that satisfy cuts in requested acceptance.
Int_t fNvar
flag to use directly the ratio of the distributions (fHistoMCNch) instead of computing it ...
void SetPtWeightsFromFONLL5overLHC10f6a()
void SetRejectCandidateIfNotFromQuark(Bool_t opt)
virtual Bool_t SetLabelArray()
Int_t fGenLctoV0bachelorOption
Lc->V0+bachelor decay option (selection level)
Double_t GetZWeight(Float_t z, Int_t runnumber)
void SetPtWeightsFromFONLL7overLHC12a12bis()
void SetPtWeightsFromFONLL276andBAMPSoverLHC12a17b()
Bool_t FillRecoCand(AliVEvent *event, AliAODRecoDecayHF3Prong *rd3)
Int_t fCountGenLimAccNoAcc
MC particle found in limited acceptance.
Double_t dNdptFit(Float_t pt, Double_t *par)
TString fPartName
number of variables for the container
Double_t GetMaxVtxZ() const
Double_t fRefMult
TProfile with mult vas. Z per period.
void SetPtWeightsFromFONLL276overLHC12a17a()
Bool_t FillRecoCasc(AliVEvent *event, AliAODRecoCascadeHF *rc, Bool_t isDStar)
Bool_t ProcessDs(Int_t returnCodeDs) const
Float_t fCutOnMomConservation
flag to define which task to use for Lc –> K0S+p
void CreateMeasuredNchHisto()
Bool_t fZvtxCorrectedNtrkEstimator
refrence multiplcity (period b)
TList * fListProfiles
response matrix for unfolding
Class for cuts on AOD reconstructed D+->Kpipi.
Bool_t fAcceptanceUnf
flag to select D0 origins. 0 Only from charm 1 only from beauty 2 both from charm and beauty ...
static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent *ev, Double_t mineta, Double_t maxeta)
Bool_t fUseTrackletsWeight
flag to decide whether to use Ncharged weights != 1 when filling the container or not ...
Int_t fCountVertex
MC particle found that satisfy acceptance cuts.
void SetMinCentrality(Float_t minCentrality=0.)
Double_t DodzFit(Float_t z, Double_t *par)
Bool_t fUseCascadeTaskForLctoV0bachelor
these are the pre-selection cuts for the TMVA
Double_t GetNchWeight(Int_t nch)
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
AliAODVertex * GetOwnPrimaryVtx() const
Char_t fSign
daughter in fin state
AliESDtrackCuts * GetTrackCuts() const
Float_t GetCentrality(AliAODEvent *aodEvent)
AliRDHFCuts * fCuts
flag for unfolding before or after cuts.
Int_t fFakeSelection
flag to switch off the centrality selection
void SetFakeSelection(Int_t fakeSel)
TF1 * fFuncWeight
configuration (slow / fast) of the CF –> different variables will be allocated (all / reduced number)...
void SetPtWeightsFromDataPbPb276overLHC12a17a()
UInt_t fResonantDecay
histogram with Nch distribution from MC production
Bool_t fCentralitySelection
flag to decide wheter to keep D0 only (0), D0bar only (1), or both D0 and D0bar (2) ...
Int_t fCountRecoAcc
Reco particle found that satisfy cuts.
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)
Int_t fGenDsOption
Ds decay option (selection level)
void SetMaxCentrality(Float_t maxCentrality=100.)
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
void SetRecoPrimVertex(Double_t zPrimVertex)
Bool_t fIsPPData
flag to use the z-vtx corrected (if not use uncorrected) multiplicity estimator
AliCFManager * fCFManager
virtual ~AliCFTaskVertexingHF()
void SetMCCandidateParam(Int_t label)
void SetPtWeightsFromFONLL7overLHC11b2Lc()
Bool_t CheckMCPartFamily(AliAODMCParticle *, TClonesArray *) const
virtual Bool_t SetRecoCandidateParam(AliAODRecoDecayHF *)
static Double_t GetCorrectedNtracklets(TProfile *estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult)
Int_t fConfiguration
Ds decay option (generation level)
Int_t CheckReflexion(Char_t isSign)
Bool_t IsEventSelected(AliVEvent *event)
Int_t fLctoV0bachelorOption
resonant deacy channel to be used if the CF should be run on resonant channels only ...
Bool_t fRejectIfNoQuark
selection flag for fakes tracks
void SetUsePID(Bool_t flag=kTRUE)
void SetPtWeightsFromFONLL276overLHC12a17b()
TH1I * fHistEventsProcessed
pointer to the CF manager
virtual void PrintAll() const
TString fDauNames
D meson name.
void SetPtWeightsFromFONLL7overLHC10f7aLc()
Bool_t RecoAcceptStep(AliESDtrackCuts **trackCuts) const
void SetPtWeightsFromFONLL7overLHC13e2fix()
Int_t fCountRecoPID
Reco particle found that satisfy cuts in PPR.
Bool_t fUseMultRatioAsWeight
flag to decide whether to use Ncharged weights != 1 when filling the container or not ...
static Int_t GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray *arrayMC, Double_t mineta, Double_t maxeta)
void SetPtWeightsFromFONLL5overLHC13d3()
Bool_t IsSelected(TObject *obj)
Int_t fEvents
Reco PID step.
Bool_t MCRefitStep(AliAODEvent *aodEvent, AliESDtrackCuts **trackCuts) const
Bool_t fUseCutsForTMVA
flag to use additional cuts needed for Lc –> K0S + p, TMVA
slow configuration, all variables
Int_t fDecayChannel
n. of events
Bool_t GetIsUsePID() const
void SetPtWeightsFromFONLL5overLHC13d3Lc()
void UserExec(Option_t *option)
Int_t fCountRecoPPR
Reco particle found that satisfy cuts in n. of ITS clusters.
Bool_t fUseMCVertex
flag to remove events not geenrated with PYTHIA
void SetTriggerClass(TString trclass0, TString trclass1="")
Int_t fDsOption
flag to use MC vertex (useful when runnign in pp)
Bool_t fUseNchWeight
flag to decide whether to use z-vtx weights != 1 when filling the container or not ...
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 SetPtWeightsFromFONLL7overLHC10f6a()
TProfile * GetEstimatorHistogram(const AliVEvent *event)
void SetConfiguration(Int_t configuration)
void SetMultiplicity(Double_t multiplicity)
void SetMCPrimaryVertex(Double_t zMCVertex)
Int_t fMultiplicityEstimator
PDG code.
void UserCreateOutputObjects()
ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects.
TH1F * fHistoMCNch
histogram with measured Nch distribution (pp 7 TeV)
TProfile * fMultEstimatorAvg[4]
Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2.
void SetPtWeightsFromFONLL276overLHC10f6a()
Double_t fWeight
flag to decide whether to use pt-weights != 1 when filling the container or not
TH1F * fHistoMeasNch
user-defined histogram to calculate the Pt weights
Bool_t ProcessLctoV0Bachelor(Int_t returnCodeDs) const
Class for HF corrections as a function of many variables and step.