33 #include <TParticle.h>
34 #include <TDatabasePDG.h>
42 #include "AliMCEvent.h"
43 #include "AliCFManager.h"
44 #include "AliCFContainer.h"
46 #include "AliInputEventHandler.h"
47 #include "AliAnalysisManager.h"
48 #include "AliAODHandler.h"
49 #include "AliAODEvent.h"
50 #include "AliAODRecoDecay.h"
56 #include "AliAODMCParticle.h"
57 #include "AliAODMCHeader.h"
58 #include "AliESDtrack.h"
60 #include "THnSparse.h"
62 #include "AliESDtrackCuts.h"
77 #include "AliAnalysisDataSlot.h"
78 #include "AliAnalysisDataContainer.h"
80 #include "AliPIDResponse.h"
86 fHistEventsProcessed(0x0),
91 fCountGenLimAccNoAcc(0),
97 fCountRecoITSClusters(0),
102 fFillFromGenerated(kFALSE),
103 fOriginDselection(0),
104 fAcceptanceUnf(kTRUE),
108 fUseFlatPtWeight(kFALSE),
110 fUseNchWeight(kFALSE),
111 fUseTrackletsWeight(kFALSE),
112 fUseMultRatioAsWeight(kFALSE),
117 fCentralitySelection(kTRUE),
119 fRejectIfNoQuark(kTRUE),
120 fUseMCVertex(kFALSE),
123 fConfiguration(kCheetah),
129 fLctoV0bachelorOption(1),
130 fGenLctoV0bachelorOption(0),
131 fUseSelectionBit(kTRUE),
133 fMultiplicityEstimator(kNtrk10),
135 fZvtxCorrectedNtrkEstimator(kFALSE),
138 fUseAdditionalCuts(kFALSE),
139 fUseCutsForTMVA(kFALSE),
140 fUseCascadeTaskForLctoV0bachelor(kFALSE),
141 fCutOnMomConservation(0.00001)
152 fHistEventsProcessed(0x0),
157 fCountGenLimAccNoAcc(0),
163 fCountRecoITSClusters(0),
168 fFillFromGenerated(kFALSE),
169 fOriginDselection(0),
170 fAcceptanceUnf(kTRUE),
174 fUseFlatPtWeight(kFALSE),
176 fUseNchWeight(kFALSE),
177 fUseTrackletsWeight(kFALSE),
178 fUseMultRatioAsWeight(kFALSE),
183 fCentralitySelection(kTRUE),
185 fRejectIfNoQuark(kTRUE),
186 fUseMCVertex(kFALSE),
189 fConfiguration(kCheetah),
195 fLctoV0bachelorOption(1),
196 fGenLctoV0bachelorOption(0),
197 fUseSelectionBit(kTRUE),
199 fMultiplicityEstimator(kNtrk10),
201 fZvtxCorrectedNtrkEstimator(kFALSE),
204 fUseAdditionalCuts(kFALSE),
205 fUseCutsForTMVA(kFALSE),
206 fUseCascadeTaskForLctoV0bachelor(kFALSE),
207 fCutOnMomConservation(0.00001)
216 DefineOutput(1,TH1I::Class());
217 DefineOutput(2,AliCFContainer::Class());
218 DefineOutput(3,THnSparseD::Class());
219 DefineOutput(4,AliRDHFCuts::Class());
221 DefineOutput(5,TList::Class());
233 AliAnalysisTaskSE::operator=(c) ;
249 fCFManager(c.fCFManager),
250 fHistEventsProcessed(c.fHistEventsProcessed),
251 fCorrelation(c.fCorrelation),
252 fListProfiles(c.fListProfiles),
253 fCountMC(c.fCountMC),
254 fCountGenLimAcc(c.fCountGenLimAcc),
255 fCountGenLimAccNoAcc(c.fCountGenLimAccNoAcc),
256 fCountAcc(c.fCountAcc),
257 fCountVertex(c.fCountVertex),
258 fCountRefit(c.fCountRefit),
259 fCountReco(c.fCountReco),
260 fCountRecoAcc(c.fCountRecoAcc),
261 fCountRecoITSClusters(c.fCountRecoITSClusters),
262 fCountRecoPPR(c.fCountRecoPPR),
263 fCountRecoPID(c.fCountRecoPID),
265 fDecayChannel(c.fDecayChannel),
266 fFillFromGenerated(c.fFillFromGenerated),
267 fOriginDselection(c.fOriginDselection),
268 fAcceptanceUnf(c.fAcceptanceUnf),
270 fUseWeight(c.fUseWeight),
272 fUseFlatPtWeight(c.fUseFlatPtWeight),
273 fUseZWeight(c.fUseZWeight),
274 fUseNchWeight(c.fUseNchWeight),
275 fUseTrackletsWeight(c.fUseTrackletsWeight),
276 fUseMultRatioAsWeight(c.fUseMultRatioAsWeight),
278 fPartName(c.fPartName),
279 fDauNames(c.fDauNames),
281 fCentralitySelection(c.fCentralitySelection),
282 fFakeSelection(c.fFakeSelection),
283 fRejectIfNoQuark(c.fRejectIfNoQuark),
284 fUseMCVertex(c.fUseMCVertex),
285 fDsOption(c.fDsOption),
286 fGenDsOption(c.fGenDsOption),
287 fConfiguration(c.fConfiguration),
288 fFuncWeight(c.fFuncWeight),
289 fHistoPtWeight(c.fHistoPtWeight),
290 fHistoMeasNch(c.fHistoMeasNch),
291 fHistoMCNch(c.fHistoMCNch),
292 fResonantDecay(c.fResonantDecay),
293 fLctoV0bachelorOption(c.fLctoV0bachelorOption),
294 fGenLctoV0bachelorOption(c.fGenLctoV0bachelorOption),
295 fUseSelectionBit(c.fUseSelectionBit),
296 fPDGcode(c.fPDGcode),
297 fMultiplicityEstimator(c.fMultiplicityEstimator),
298 fRefMult(c.fRefMult),
299 fZvtxCorrectedNtrkEstimator(c.fZvtxCorrectedNtrkEstimator),
300 fIsPPData(c.fIsPPData),
301 fIsPPbData(c.fIsPPbData),
302 fUseAdditionalCuts(c.fUseAdditionalCuts),
303 fUseCutsForTMVA(c.fUseCutsForTMVA),
304 fUseCascadeTaskForLctoV0bachelor(c.fUseCascadeTaskForLctoV0bachelor),
305 fCutOnMomConservation(c.fCutOnMomConservation)
338 if (fDebug>1) printf(
"AliCFTaskVertexingHF::Init()");
339 if(
fUseWeight &&
fUseZWeight) { AliFatal(
"Can not use at the same time pt and z-vtx weights, please choose");
return; }
340 if(
fUseWeight &&
fUseNchWeight) { AliInfo(
"Beware, using at the same time pt and Nch weights, please check"); }
346 AliFatal(
"No cuts defined - Exiting...");
457 AliFatal(
"The decay channel MUST be defined according to AliCFVertexing::DecayChannel - Exiting...");
461 const char* nameoutput=GetOutputSlot(4)->GetContainer()->GetName();
463 copyfCuts->SetName(nameoutput);
466 PostData(4, copyfCuts);
469 AliFatal(
"Failing initializing AliRDHFCuts object - Exiting...");
478 period[0] =
"LHC13b"; period[1] =
"LHC13c";
481 period[0] =
"LHC10b"; period[1] =
"LHC10c"; period[2] =
"LHC10d"; period[3] =
"LHC10e";
485 for(
Int_t i=0; i<nProfiles; i++){
488 hprof->SetName(Form(
"ProfileTrkVsZvtx%s\n",period[i].
Data()));
512 PostData(2,
fCFManager->GetParticleContainer()) ;
515 AliDebug(3,Form(
"*** Processing event %d\n",
fEvents));
518 AliWarning(
"Flag to fill container with generated value ON ---> dca, d0pi, d0K, d0xd0, cosPointingAngle will be set as dummy!");
522 Error(
"UserExec",
"NO EVENT FOUND!");
528 TClonesArray *arrayBranch=0;
530 if(!aodEvent && AODEvent() && IsStandardAOD()) {
533 aodEvent =
dynamic_cast<AliAODEvent*
> (AODEvent());
536 AliAODHandler* aodHandler = (AliAODHandler*)
537 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
538 if(aodHandler->GetExtensions()) {
539 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
544 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
548 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
552 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"CascadesHF");
558 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
562 arrayBranch=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm4Prong");
573 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"D0toKpi");
577 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Dstar");
581 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"CascadesHF");
587 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Charm3Prong");
591 arrayBranch=(TClonesArray*)aodEvent->GetList()->FindObject(
"Charm4Prong");
599 AliAODVertex *aodVtx = (AliAODVertex*)aodEvent->GetPrimaryVertex();
601 AliDebug(3,
"The event was skipped due to missing vertex");
606 AliError(
"Could not find array of HF vertices");
619 TClonesArray* mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
621 AliError(
"Could not find Monte-Carlo in AOD");
625 Int_t icountGenLimAcc = 0;
626 Int_t icountGenLimAccNoAcc = 0;
628 Int_t icountReco = 0;
629 Int_t icountVertex = 0;
630 Int_t icountRefit = 0;
631 Int_t icountRecoAcc = 0;
632 Int_t icountRecoITSClusters = 0;
633 Int_t icountRecoPPR = 0;
634 Int_t icountRecoPID = 0;
637 AliAODMCHeader *mcHeader =
dynamic_cast<AliAODMCHeader*
>(aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
639 AliError(
"Could not find MC Header in AOD");
705 AliError(
"No AliCFVertexingHF initialized");
706 delete[] containerInput;
707 delete[] containerInputMC;
711 Double_t zPrimVertex = aodVtx ->GetZ();
712 Double_t zMCVertex = mcHeader->GetVtxZ();
713 Int_t runnumber = aodEvent->GetRunNumber();
719 nTracklets = (
Double_t)nTrackletsEta10;
728 nTracklets = (
Double_t)nTrackletsEta10Corr;
740 AliDebug(2,Form(
"Using Nch weights, Mult=%d Weight=%f\n",nChargedMCPhysicalPrimary,
fWeight));
745 AliDebug(3,Form(
"z coordinate of MC vertex = %f, it was required to be within [-%f, +%f], skipping event", zMCVertex,
fCuts->
GetMaxVtxZ(),
fCuts->
GetMaxVtxZ()));
746 delete[] containerInput;
747 delete[] containerInputMC;
752 if(aodEvent->GetTriggerMask()==0 &&
753 (runnumber>=195344 && runnumber<=195677)){
754 AliDebug(3,
"Event rejected because of null trigger mask");
755 delete[] containerInput;
756 delete[] containerInputMC;
761 AliESDtrackCuts** trackCuts =
new AliESDtrackCuts*[cfVtxHF->
GetNProngs()];
799 delete[] containerInput;
800 delete[] containerInputMC;
816 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aodEvent->GetVZEROData();
817 if(vzeroAOD) vzeroMult = vzeroAOD->GetMTotV0A() + vzeroAOD->GetMTotV0C();
826 for (
Int_t iPart=0; iPart<mcArray->GetEntriesFast(); iPart++) {
827 AliAODMCParticle* mcPart =
dynamic_cast<AliAODMCParticle*
>(mcArray->At(iPart));
829 AliError(
"Failed casting particle from MC array!, Skipping particle");
837 if (!
fCFManager->CheckParticleCuts(0, mcPart)) {
838 AliDebug(2,
"Check the MC-level cuts - not desidered particle");
842 AliDebug(3, Form(
"\n\n---> COOL! we found a particle (particle %d)!!! with PDG code = %d \n\n", iPart, mcPart->GetPdgCode()));
848 AliDebug(2,Form(
"Impossible to set the label array for particle %d (decaychannel = %d)", iPart,
fDecayChannel));
854 AliDebug(2,Form(
"Check on the family wrong for particle %d!!! (decaychannel = %d)", iPart,
fDecayChannel));
858 AliDebug(2,Form(
"Check on the family OK for particle %d!!! (decaychannel = %d)", iPart,
fDecayChannel));
862 Bool_t mcContainerFilled = cfVtxHF -> FillMCContainer(containerInputMC);
863 AliDebug(2, Form(
"particle = %d mcContainerFilled = %d", iPart, mcContainerFilled));
864 if (mcContainerFilled) {
867 AliDebug(2,
"Using Histogram as Pt weight function");
871 AliDebug(2,
"Using function");
875 AliDebug(2,
"Using FONLL");
878 AliDebug(2,Form(
"pt = %f, weight = %f",containerInputMC[0],
fWeight));
881 AliDebug(3, Form(
"Not in limited acceptance, containerInputMC[0] = %f, containerInputMC[1] = %f", containerInputMC[0], containerInputMC[1]));
885 AliDebug(3, Form(
"YES!! in limited acceptance, containerInputMC[0] = %f, containerInputMC[1] = %f", containerInputMC[0],containerInputMC[1]));
889 if (TMath::Abs(containerInputMC[1]) < 0.5) {
892 AliDebug(3,
"MC Lim Acc container filled\n");
894 if (!(cfVtxHF-> MCAcceptanceStep())) {
896 icountGenLimAccNoAcc++;
897 AliDebug(3,
"MC Lim Acc No Acc container filled\n");
905 AliDebug(3,
"MC container filled \n");
910 Bool_t mcAccepStep = cfVtxHF-> MCAcceptanceStep();
913 AliDebug(3,
"MC acceptance cut passed\n");
920 AliDebug(3,
"Vertex cut passed and container filled\n");
927 AliDebug(3,
"MC Refit cut passed and container filled\n");
931 AliDebug(3,
"MC Refit cut not passed\n");
936 AliDebug (3,
"MC vertex step not passed\n");
941 AliDebug (3,
"MC in acceptance step not passed\n");
946 AliDebug (3,
"MC container not filled\n");
950 if (cquarks<2) AliDebug(2,Form(
"Event with %d c-quarks", cquarks));
951 AliDebug(2,Form(
"Found %i MC particles that are %s!!",icountMC,
fPartName.Data()));
952 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Acc cuts!!",icountAcc,
fPartName.Data()));
953 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Vertex cuts!!",icountVertex,
fPartName.Data()));
954 AliDebug(2,Form(
"Found %i MC particles that are %s and satisfy Refit cuts!!",icountRefit,
fPartName.Data()));
964 AliDebug(2,Form(
"Found %d vertices for decay channel %d",arrayBranch->GetEntriesFast(),
fDecayChannel));
967 for(
Int_t iCandid = 0; iCandid<arrayBranch->GetEntriesFast();iCandid++){
1007 if (!signAssociation){
1013 if (isPartOrAntipart == 0){
1014 AliDebug(2, Form(
"The candidate pdg code doesn't match the requirement set in the task (fSign = %d)",
fSign));
1019 AliDebug(3,Form(
"iCandid=%d - signAssociation=%d, isPartOrAntipart=%d",iCandid, signAssociation, isPartOrAntipart));
1022 AliDebug(3, Form(
"CF task: RecoContFilled for candidate %d is %d", iCandid, (
Int_t)recoContFilled));
1023 if (recoContFilled){
1028 AliDebug(2,
"Using Histogram as Pt weight function");
1032 AliDebug(2,
"Using function");
1036 AliDebug(2,
"Using FONLL");
1039 AliDebug(2, Form(
"pt = %f, weight = %f",containerInput[0],
fWeight));
1048 if (recoStep) AliDebug(2, Form(
"particle = %d --> CF task: Reco step for candidate %d is %d", iCandid, iCandid, (
Int_t)recoStep));
1053 Bool_t isBitSelected = kTRUE;
1063 if(!((dynamic_cast<AliAODRecoCascadeHF*>(charmCandidate))->CheckCascadeFlags())) isBitSelected = kFALSE;
1071 if (recoStep && recoContFilled && vtxCheck){
1074 AliDebug(3,
"Reco step passed and container filled\n");
1078 if (recoAcceptanceStep) {
1081 AliDebug(3,
"Reco acceptance cut passed and container filled\n");
1085 Bool_t bUnfolding = cfVtxHF -> FillUnfoldingMatrix(
fPDGcode,fill);
1091 if (recoITSnCluster){
1093 icountRecoITSClusters++;
1094 AliDebug(3,
"Reco n ITS cluster cut passed and container filled\n");
1097 Int_t recoAnalysisCuts = -1, recoPidSelection = -1;
1103 if(keepDs) recoAnalysisCuts=3;
1107 if (keepLctoV0bachelor) recoAnalysisCuts=3;
1109 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
1110 AliPIDResponse* pidResponse = inputHandler->GetPIDResponse();
1117 Bool_t tempAn=(recoAnalysisCuts == 3 || recoAnalysisCuts == isPartOrAntipart);
1119 if (
fDecayChannel == 32) tempAn=(recoAnalysisCuts >0 || recoAnalysisCuts == isPartOrAntipart);
1124 AliDebug(3,
"Reco Analysis cuts passed and container filled \n");
1132 if(keepDs) recoPidSelection=3;
1135 if (keepLctoV0bachelor) recoPidSelection=3;
1138 Bool_t tempPid=(recoPidSelection == 3 || recoPidSelection == isPartOrAntipart);
1140 if (
fDecayChannel == 32) tempPid=(recoPidSelection >0 || recoPidSelection == isPartOrAntipart);
1146 if (isPartOrAntipart == 1){
1148 }
else if (isPartOrAntipart == 2){
1151 if ((weigPID < 0) || (weigPID > 1)) weigPID = 0.;
1155 Int_t labDau0=((AliAODTrack*)charmCandidate->GetDaughter(0))->GetLabel();
1156 AliAODMCParticle* firstDau=(AliAODMCParticle*)mcArray->UncheckedAt(TMath::Abs(labDau0));
1158 Int_t pdgCode0=TMath::Abs(firstDau->GetPdgCode());
1161 }
else if(pdgCode0==211){
1164 if ((weigPID < 0) || (weigPID > 1)) weigPID = 0.;
1172 AliDebug(3,
"Reco PID cuts passed and container filled \n");
1175 Bool_t bUnfolding = cfVtxHF -> FillUnfoldingMatrix(
fPDGcode,fill);
1180 AliDebug(3,
"Analysis Cuts step not passed \n");
1186 AliDebug(3,
"PID selection not passed \n");
1192 AliDebug(3,
"Number of ITS cluster step not passed\n");
1198 AliDebug(3,
"Reco acceptance step not passed\n");
1204 AliDebug(3,
"Reco step not passed\n");
1221 delete[] containerInput;
1222 delete[] containerInputMC;
1228 delete [] trackCuts;
1241 AliAnalysisTaskSE::Terminate();
1246 AliInfo(Form(
"Found %i MC particles that are %s in MC and satisfy Acc cuts, in %d events",
fCountAcc,
fPartName.Data(),
fEvents));
1247 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));
1248 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));
1256 AliCFContainer *cont=
dynamic_cast<AliCFContainer*
> (GetOutputData(2));
1258 printf(
"CONTAINER NOT FOUND\n");
1265 Int_t nvarToPlot = 0;
1268 for (
Int_t ih = 0; ih<3; ih++){
1274 h[ih] =
new TH1D[nvarToPlot];
1276 for(
Int_t iC=1;iC<nvarToPlot; iC++){
1278 h[0][iC] = *(cont->ShowProjection(iC,0));
1280 h[1][iC] = *(cont->ShowProjection(iC,1));
1282 h[2][iC] = *(cont->ShowProjection(iC,4));
1288 for (
Int_t ih = 0; ih<3; ih++){
1289 h[ih] =
new TH1D[nvarToPlot];
1291 for(
Int_t iC=0;iC<nvarToPlot; iC++){
1293 h[0][iC] = *(cont->ShowProjection(iC,0));
1295 h[1][iC] = *(cont->ShowProjection(iC,1));
1297 h[2][iC] = *(cont->ShowProjection(iC,4));
1305 titles =
new TString[nvarToPlot];
1306 titles[0]=
"pT_Dplus (GeV/c)";
1307 titles[1]=
"rapidity";
1308 titles[2]=
"phi (rad)";
1309 titles[3]=
"cT (#mum)";
1310 titles[4]=
"cosPointingAngle";
1311 titles[5]=
"pT_1 (GeV/c)";
1312 titles[6]=
"pT_2 (GeV/c)";
1313 titles[7]=
"pT_3 (GeV/c)";
1314 titles[8]=
"d0_1 (#mum)";
1315 titles[9]=
"d0_2 (#mum)";
1316 titles[10]=
"d0_3 (#mum)";
1317 titles[11]=
"zVertex (cm)";
1320 titles =
new TString[nvarToPlot];
1321 titles[0]=
"p_{T}(#Lambda_{c}) [GeV/c]";
1322 titles[1]=
"y(#Lambda_{c})";
1323 titles[2]=
"#varphi(#Lambda_{c}) [rad]";
1324 titles[3]=
"onTheFlyStatusV0";
1325 titles[4]=
"z_{vtx} [cm]";
1326 titles[5]=
"centrality";
1328 titles[7]=
"multiplicity";
1330 titles[8]=
"p(bachelor) [GeV/c]";
1331 titles[9]=
"p_{T}(V0) [GeV/c]";
1333 titles[11]=
"#varphi(V0) [rad]";
1334 titles[12]=
"m_{inv}(#pi^{+}#pi^{+}) [GeV/c^{2}]";
1335 titles[13]=
"dcaV0 (nSigma)";
1336 titles[14]=
"cosine pointing angle (V0)";
1337 titles[15]=
"cosine pointing angle (#Lambda_{c})";
1342 titles =
new TString[nvarToPlot];
1343 titles[0]=
"pT_D0 (GeV/c)";
1344 titles[1]=
"rapidity";
1345 titles[2]=
"cosThetaStar";
1346 titles[3]=
"pT_pi (GeV/c)";
1347 titles[4]=
"pT_K (Gev/c)";
1348 titles[5]=
"cT (#mum)";
1349 titles[6]=
"dca (#mum)";
1350 titles[7]=
"d0_pi (#mum)";
1351 titles[8]=
"d0_K (#mum)";
1352 titles[9]=
"d0xd0 (#mum^2)";
1353 titles[10]=
"cosPointingAngle";
1354 titles[11]=
"phi (rad)";
1359 titles =
new TString[nvarToPlot];
1361 titles[0]=
"p_{T}(#Lambda_{c}) [GeV/c]";
1362 titles[1]=
"y(#Lambda_{c})";
1363 titles[2]=
"#varphi(#Lambda_{c}) [rad]";
1364 titles[3]=
"onTheFlyStatusV0";
1365 titles[4]=
"z_{vtx} [cm]";
1366 titles[5]=
"centrality";
1368 titles[7]=
"multiplicity";
1370 titles[0]=
"pT_candidate (GeV/c)";
1371 titles[1]=
"rapidity";
1372 titles[2]=
"cT (#mum)";
1374 titles[4]=
"z_{vtx}";
1375 titles[5]=
"centrality";
1377 titles[7]=
"multiplicity";
1381 Int_t markers[16]={20,24,21,25,27,28,
1385 for(
Int_t iC=0;iC<nvarToPlot; iC++){
1386 for(
Int_t iStep=0;iStep<3;iStep++){
1387 h[iStep][iC].SetTitle(titles[iC].
Data());
1388 h[iStep][iC].GetXaxis()->SetTitle(titles[iC].
Data());
1389 Double_t maxh=h[iStep][iC].GetMaximum();
1390 h[iStep][iC].GetYaxis()->SetRangeUser(0,maxh*1.2);
1391 h[iStep][iC].SetMarkerStyle(markers[iC]);
1392 h[iStep][iC].SetMarkerColor(colors[iStep]);
1396 gStyle->SetCanvasColor(0);
1397 gStyle->SetFrameFillColor(0);
1398 gStyle->SetTitleFillColor(0);
1399 gStyle->SetStatColor(0);
1402 TCanvas * c1 =
new TCanvas(Form(
"c1New_%d",
fDecayChannel),
"Vars 0, 1, 2, 3",1100,1200);
1405 for(
Int_t iVar=0; iVar<4; iVar++){
1407 h[0][iVar].DrawCopy(
"p");
1409 h[1][iVar].DrawCopy(
"p");
1411 h[2][iVar].DrawCopy(
"p");
1414 TCanvas * c2 =
new TCanvas(Form(
"c2New_%d",
fDecayChannel),
"Vars 4, 5, 6, 7",1100,1200);
1417 for(
Int_t iVar=4; iVar<8; iVar++){
1419 h[0][iVar].DrawCopy(
"p");
1421 h[1][iVar].DrawCopy(
"p");
1423 h[2][iVar].DrawCopy(
"p");
1427 TCanvas * c3 =
new TCanvas(Form(
"c3New_%d",
fDecayChannel),
"Vars 8, 9, 10, 11",1100,1200);
1430 for(
Int_t iVar=8; iVar<12; iVar++){
1432 h[0][iVar].DrawCopy(
"p");
1434 h[1][iVar].DrawCopy(
"p");
1436 h[2][iVar].DrawCopy(
"p");
1439 TCanvas * c4 =
new TCanvas(Form(
"c4New_%d",
fDecayChannel),
"Vars 12, 13, 14, 15",1100,1200);
1442 for(
Int_t iVar=12; iVar<16; iVar++){
1444 h[0][iVar].DrawCopy(
"p");
1446 h[1][iVar].DrawCopy(
"p");
1448 h[2][iVar].DrawCopy(
"p");
1466 TFile* file_projection =
new TFile(
"CFtaskHFprojectionNew.root",
"RECREATE");
1471 for(
Int_t iC=0;iC<nvarToPlot; iC++){
1472 for(
Int_t iStep=0;iStep<3;iStep++){
1473 h[iStep][iC].Write(Form(
"Step%d_%s",iStep,titles[iC].
Data()));
1476 file_projection->Close();
1477 for (
Int_t ih = 0; ih<3; ih++)
delete [] h[ih];
1489 Info(
"UserCreateOutputObjects",
"CreateOutputObjects of task %s\n", GetName());
1493 const char* nameoutput=GetOutputSlot(1)->GetContainer()->GetName();
1499 PostData(2,
fCFManager->GetParticleContainer()) ;
1511 fFuncWeight=
new TF1(
"funcWeight",
"[0]+[1]*TMath::Exp(-[2]*x)",0.,50.);
1523 fFuncWeight=
new TF1(
"funcWeight",
"[0]+[1]/TMath::Power(x,[2])",0.05,50.);
1535 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.);
1536 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);
1546 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.);
1547 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);
1556 fHistoPtWeight =
new TH1F(
"histoWeight",
"histoWeight",400,0.,40.);
1557 Float_t binc[400]={1.118416, 1.003458, 0.935514, 0.907222, 0.904359, 0.913668, 0.933906, 0.963898, 0.996388, 1.031708, 1.066404, 1.099683, 1.125805, 1.145181, 1.165910, 1.181905, 1.193425, 1.203891, 1.204726, 1.209411, 1.209943, 1.204763, 1.205291, 1.198912, 1.197390, 1.182005, 1.184194, 1.175994, 1.167881, 1.158348, 1.147190, 1.139833, 1.126940, 1.123322, 1.108389, 1.102199, 1.089464, 1.075874, 1.061964, 1.051429, 1.038113, 1.026668, 1.011441, 0.998567, 0.987658, 0.972434, 0.950068, 0.940758, 0.916880, 0.911931, 0.894512, 0.878691, 0.860589, 0.848025, 0.830774, 0.819399, 0.801134, 0.775276, 0.766382, 0.750495, 0.736935, 0.717529, 0.702637, 0.689152, 0.671334, 0.652030, 0.635696, 0.621365, 0.608362, 0.599019, 0.576024, 0.562136, 0.550938, 0.533587, 0.516410, 0.509744, 0.501655, 0.487402, 0.476469, 0.463762, 0.445979, 0.438088, 0.422214, 0.417467, 0.404357, 0.391450, 0.379996, 0.371201, 0.361497, 0.352912, 0.343189, 0.329183, 0.327662, 0.310783, 0.304525, 0.301007, 0.293306, 0.278332, 0.274419, 0.267361, 0.261459, 0.255514, 0.249293, 0.241129, 0.237600, 0.231343, 0.221982, 0.216872, 0.211094, 0.206954, 0.202333, 0.196572, 0.193274, 0.188240, 0.181817, 0.178364, 0.173614, 0.167135, 0.166055, 0.163423, 0.156557, 0.155821, 0.151985, 0.144909, 0.145062, 0.139720, 0.138873, 0.131892, 0.129969, 0.126509, 0.126978, 0.120451, 0.117661, 0.116300, 0.115604, 0.112215, 0.109237, 0.107720, 0.106419, 0.102050, 0.102777, 0.097406, 0.098447, 0.095964, 0.093868, 0.092430, 0.089329, 0.088249, 0.085881, 0.084417, 0.085498, 0.082444, 0.079151, 0.079565, 0.077811, 0.077293, 0.075218, 0.072445, 0.073054, 0.071545, 0.070279, 0.068046, 0.067854, 0.068092, 0.065378, 0.064405, 0.062060, 0.063391, 0.061718, 0.059616, 0.058913, 0.058895, 0.058311, 0.056320, 0.056527, 0.055349, 0.053701, 0.054735, 0.052264, 0.051277, 0.051554, 0.050545, 0.048995, 0.049507, 0.048466, 0.048156, 0.046809, 0.047600, 0.046078, 0.044801, 0.044113, 0.043700, 0.043530, 0.043396, 0.042556, 0.041048, 0.041657, 0.040394, 0.041314, 0.040720, 0.039656, 0.038478, 0.039276, 0.038777, 0.037730, 0.036918, 0.036466, 0.035827, 0.035285, 0.035963, 0.034371, 0.034757, 0.033205, 0.033666, 0.033266, 0.032583, 0.033570, 0.032102, 0.032107, 0.031464, 0.032160, 0.030091, 0.030564, 0.029464, 0.029613, 0.029626, 0.029512, 0.029324, 0.028607, 0.027628, 0.027251, 0.027072, 0.027077, 0.026724, 0.026961, 0.026303, 0.026237, 0.025454, 0.025133, 0.025365, 0.026014, 0.024807, 0.023901, 0.023459, 0.023405, 0.023654, 0.023981, 0.023675, 0.022493, 0.022781, 0.021801, 0.021704, 0.022372, 0.021189, 0.020681, 0.020779, 0.021324, 0.020558, 0.020901, 0.020586, 0.020808, 0.019276, 0.019516, 0.019706, 0.018935, 0.018632, 0.018516, 0.019187, 0.018916, 0.018039, 0.018208, 0.018045, 0.017628, 0.017916, 0.017711, 0.017838, 0.017222, 0.016565, 0.015733, 0.016264, 0.015826, 0.016090, 0.016622, 0.015802, 0.016621, 0.015441, 0.015309, 0.014860, 0.014935, 0.014968, 0.014443, 0.014485, 0.015136, 0.014078, 0.014414, 0.013908, 0.014071, 0.014078, 0.013766, 0.013436, 0.013507, 0.013480, 0.013224, 0.013041, 0.013935, 0.012885, 0.012453, 0.012528, 0.012492, 0.012225, 0.012542, 0.012706, 0.012136, 0.011902, 0.011560, 0.011448, 0.011861, 0.011271, 0.011831, 0.011159, 0.011171, 0.010966, 0.011311, 0.011002, 0.011130, 0.010995, 0.010450, 0.010663, 0.010678, 0.010492, 0.009861, 0.010507, 0.009916, 0.010121, 0.010029, 0.010046, 0.009370, 0.009647, 0.010104, 0.009282, 0.009830, 0.009403, 0.009148, 0.009172, 0.008893, 0.009158, 0.009019, 0.008780, 0.008579, 0.009063, 0.008634, 0.008988, 0.008265, 0.008581, 0.008575, 0.008690, 0.008181, 0.008352, 0.008150, 0.008430, 0.008256, 0.008119, 0.008453, 0.008447, 0.008021, 0.007938, 0.008025, 0.007718, 0.008127, 0.007651, 0.007590, 0.007316, 0.007839, 0.007504, 0.007341, 0.007527, 0.007263, 0.007668, 0.007306, 0.007271, 0.006910, 0.007257, 0.007260, 0.006810, 0.006967, 0.006887, 0.006867, 0.007202, 0.006829, 0.006370, 0.006710, 0.006417, 0.006361, 0.006800, 0.006410, 0.006323, 0.006790, 0.006322, 0.006673, 0.006547};
1558 for(
Int_t i=0; i<400; i++){
1571 fHistoPtWeight =
new TH1F(
"histoWeight",
"histoWeight",400,0.,40.);
1572 Float_t binc[400]={2.166180, 1.866117, 1.667595, 1.547176, 1.486661, 1.457891, 1.426949, 1.399055, 1.383278, 1.349383, 1.317009, 1.282321, 1.234257, 1.181136, 1.136655, 1.087523, 1.037912, 0.993256, 0.944746, 0.900948, 0.865869, 0.827193, 0.794424, 0.757723, 0.733020, 0.700164, 0.682189, 0.659872, 0.637918, 0.615749, 0.593020, 0.574402, 0.556158, 0.542663, 0.525494, 0.516038, 0.503629, 0.490980, 0.479143, 0.469005, 0.457749, 0.447668, 0.436803, 0.427073, 0.418282, 0.407867, 0.395093, 0.387861, 0.374742, 0.369462, 0.360146, 0.351991, 0.342990, 0.336259, 0.327730, 0.322382, 0.314602, 0.303874, 0.299820, 0.293049, 0.287539, 0.280329, 0.274866, 0.269939, 0.263299, 0.256057, 0.249215, 0.242170, 0.235704, 0.230709, 0.220529, 0.213921, 0.208394, 0.202424, 0.196700, 0.194943, 0.192620, 0.187894, 0.184411, 0.180204, 0.172915, 0.169077, 0.162201, 0.159636, 0.153904, 0.148296, 0.143282, 0.139306, 0.135561, 0.132342, 0.128696, 0.123444, 0.122873, 0.116544, 0.114197, 0.112878, 0.110018, 0.104547, 0.103222, 0.100707, 0.098622, 0.096513, 0.094295, 0.091334, 0.090122, 0.087870, 0.084894, 0.083729, 0.082265, 0.081404, 0.080323, 0.078750, 0.078132, 0.076781, 0.074823, 0.074050, 0.072614, 0.070093, 0.069828, 0.068907, 0.066189, 0.066054, 0.064600, 0.061757, 0.061986, 0.059862, 0.059656, 0.056807, 0.055956, 0.054386, 0.054507, 0.051629, 0.050358, 0.049702, 0.049331, 0.047814, 0.046476, 0.045762, 0.045142, 0.043224, 0.043484, 0.041282, 0.041794, 0.040809, 0.039985, 0.039439, 0.038181, 0.037782, 0.036831, 0.036264, 0.036790, 0.035535, 0.034173, 0.034409, 0.033659, 0.033308, 0.032290, 0.030981, 0.031121, 0.030361, 0.029708, 0.028653, 0.028461, 0.028449, 0.027208, 0.026697, 0.025623, 0.026069, 0.025279, 0.024332, 0.024341, 0.024629, 0.024677, 0.024117, 0.024490, 0.024257, 0.023804, 0.024537, 0.023692, 0.023502, 0.023888, 0.023673, 0.023193, 0.023684, 0.023429, 0.023521, 0.023014, 0.023346, 0.022544, 0.021866, 0.021477, 0.021224, 0.021089, 0.020972, 0.020515, 0.019739, 0.019982, 0.019328, 0.019719, 0.019387, 0.018833, 0.018227, 0.018558, 0.018276, 0.017738, 0.017460, 0.017365, 0.017178, 0.017033, 0.017478, 0.016817, 0.017119, 0.016463, 0.016802, 0.016711, 0.016475, 0.017083, 0.016441, 0.016548, 0.016320, 0.016786, 0.015804, 0.016153, 0.015668, 0.015843, 0.015810, 0.015651, 0.015454, 0.014981, 0.014376, 0.014089, 0.013906, 0.013818, 0.013549, 0.013580, 0.013160, 0.013040, 0.012566, 0.012324, 0.012353, 0.012582, 0.011915, 0.011401, 0.011112, 0.011008, 0.011046, 0.011119, 0.010954, 0.010439, 0.010604, 0.010179, 0.010163, 0.010507, 0.009981, 0.009771, 0.009846, 0.010134, 0.009798, 0.009991, 0.009869, 0.010005, 0.009295, 0.009438, 0.009557, 0.009210, 0.009088, 0.009057, 0.009412, 0.009306, 0.008899, 0.009009, 0.008952, 0.008764, 0.008926, 0.008842, 0.008924, 0.008634, 0.008322, 0.007920, 0.008205, 0.008000, 0.008151, 0.008438, 0.008037, 0.008472, 0.007886, 0.007835, 0.007621, 0.007675, 0.007707, 0.007452, 0.007489, 0.007841, 0.007308, 0.007497, 0.007248, 0.007348, 0.007367, 0.007227, 0.007097, 0.007179, 0.007209, 0.007115, 0.007059, 0.007588, 0.007058, 0.006862, 0.006945, 0.006965, 0.006856, 0.007075, 0.007209, 0.006925, 0.006830, 0.006672, 0.006645, 0.006923, 0.006615, 0.006982, 0.006622, 0.006666, 0.006579, 0.006823, 0.006673, 0.006786, 0.006740, 0.006440, 0.006606, 0.006650, 0.006568, 0.006206, 0.006646, 0.006305, 0.006468, 0.006442, 0.006486, 0.006080, 0.006291, 0.006622, 0.006113, 0.006506, 0.006254, 0.006114, 0.006161, 0.006002, 0.006211, 0.006146, 0.006012, 0.005902, 0.006264, 0.005996, 0.006271, 0.005793, 0.006043, 0.006067, 0.006177, 0.005842, 0.005991, 0.005872, 0.006102, 0.006003, 0.005930, 0.006201, 0.006224, 0.005937, 0.005901, 0.005992, 0.005788, 0.006121, 0.005787, 0.005766, 0.005582, 0.006006, 0.005774, 0.005672, 0.005841, 0.005660, 0.006000, 0.005741, 0.005737, 0.005475, 0.005773, 0.005799, 0.005462, 0.005610, 0.005569, 0.005574, 0.005871, 0.005589, 0.005234, 0.005535, 0.005314, 0.005288, 0.005676, 0.005371, 0.005319, 0.005734, 0.005360, 0.005679, 0.005593};
1573 for(
Int_t i=0; i<400; i++){
1585 fHistoPtWeight =
new TH1F(
"histoWeight",
"histoWeight",400,0.,40.);
1586 Float_t binc[400]={1.179906, 1.091249, 1.047774, 1.045579, 1.071679, 1.112413, 1.167414, 1.236240, 1.310301, 1.390289, 1.471711, 1.553389, 1.626886, 1.692115, 1.760647, 1.813658, 1.850817, 1.886699, 1.907671, 1.934832, 1.955433, 1.966727, 1.987262, 1.996316, 2.013326, 1.973926, 1.931144, 1.871654, 1.812942, 1.752718, 1.690846, 1.635303, 1.572611, 1.523510, 1.459790, 1.402510, 1.331908, 1.261575, 1.192241, 1.127915, 1.061798, 0.998830, 0.933514, 0.871774, 0.812936, 0.762844, 0.719340, 0.686587, 0.644108, 0.615714, 0.579512, 0.545254, 0.510508, 0.479884, 0.447423, 0.426154, 0.408934, 0.388264, 0.376424, 0.361389, 0.347757, 0.331685, 0.318029, 0.305285, 0.290922, 0.278523, 0.269807, 0.262025, 0.254878, 0.249325, 0.238179, 0.230899, 0.224792, 0.216253, 0.207879, 0.204465, 0.201153, 0.195373, 0.190926, 0.185773, 0.178589, 0.175371, 0.168959, 0.167004, 0.161705, 0.156809, 0.152788, 0.149806, 0.146429, 0.143478, 0.140037, 0.134813, 0.134679, 0.128205, 0.126078, 0.125038, 0.122214, 0.116329, 0.115044, 0.112427, 0.110279, 0.108098, 0.105784, 0.102628, 0.101429, 0.099101, 0.095464, 0.093631, 0.091491, 0.090045, 0.088374, 0.086188, 0.085067, 0.083168, 0.080636, 0.079414, 0.077610, 0.075013, 0.074825, 0.073932, 0.071106, 0.071050, 0.069574, 0.066593, 0.066924, 0.064876, 0.065064, 0.062345, 0.061980, 0.060859, 0.061616, 0.058952, 0.058079, 0.057894, 0.058031, 0.056604, 0.055180, 0.054490, 0.053909, 0.051768, 0.052210, 0.049552, 0.050152, 0.048955, 0.047953, 0.047224, 0.045588, 0.044985, 0.043728, 0.042934, 0.043434, 0.041834, 0.040118, 0.040281, 0.039348, 0.038987, 0.037793, 0.036258, 0.036420, 0.035528, 0.034761, 0.033524, 0.033296, 0.033280, 0.031825, 0.031351, 0.030329, 0.031103, 0.030401, 0.029481, 0.029247, 0.029352, 0.029174, 0.028286, 0.028500, 0.028017, 0.027293, 0.027932, 0.026779, 0.026379, 0.026628, 0.026211, 0.025508, 0.025877, 0.025433, 0.025328, 0.024636, 0.025069, 0.024282, 0.023625, 0.023278, 0.023074, 0.023000, 0.022943, 0.022514, 0.021767, 0.022180, 0.021594, 0.022175, 0.021944, 0.021456, 0.020901, 0.021419, 0.021230, 0.020738, 0.020322, 0.020055, 0.019686, 0.019371, 0.019725, 0.018835, 0.019029, 0.018163, 0.018398, 0.018163, 0.017719, 0.018126, 0.017208, 0.017086, 0.016622, 0.016865, 0.015663, 0.015791, 0.015108, 0.015069, 0.015033, 0.015006, 0.014940, 0.014604, 0.014133, 0.013968, 0.013904, 0.013934, 0.013780, 0.013930, 0.013727, 0.013940, 0.013763, 0.013826, 0.014192, 0.014801, 0.014347, 0.014048, 0.014009, 0.014197, 0.014571, 0.014999, 0.015030, 0.014491, 0.014891, 0.014456, 0.014596, 0.015256, 0.014648, 0.014492, 0.014756, 0.015344, 0.014986, 0.015433, 0.015394, 0.015756, 0.014778, 0.015145, 0.015478, 0.015051, 0.014986, 0.015067, 0.015793, 0.015748, 0.015188, 0.015502, 0.015533, 0.015340, 0.015759, 0.015745, 0.016026, 0.015635, 0.015194, 0.014579, 0.015225, 0.014963, 0.015365, 0.016030, 0.015387, 0.016341, 0.015327, 0.015340, 0.015030, 0.015246, 0.015420, 0.015015, 0.015195, 0.016021, 0.015034, 0.015528, 0.015114, 0.015423, 0.015564, 0.015348, 0.015107, 0.015314, 0.015411, 0.015243, 0.015154, 0.016324, 0.015215, 0.014823, 0.015030, 0.015104, 0.014896, 0.015400, 0.015721, 0.015131, 0.014951, 0.014630, 0.014597, 0.015235, 0.014583, 0.015418, 0.014648, 0.014769, 0.014601, 0.015167, 0.014857, 0.015134, 0.015053, 0.014405, 0.014800, 0.014921, 0.014760, 0.013966, 0.014979, 0.014230, 0.014620, 0.014581, 0.014701, 0.013799, 0.014299, 0.015071, 0.013931, 0.014846, 0.014290, 0.013988, 0.014113, 0.013767, 0.014263, 0.014131, 0.013840, 0.013604, 0.014456, 0.013853, 0.014505, 0.013416, 0.014010, 0.014081, 0.014352, 0.013589, 0.013952, 0.013690, 0.014241, 0.014024, 0.013868, 0.014517, 0.014587, 0.013927, 0.013857, 0.014084, 0.013619, 0.014417, 0.013644, 0.013607, 0.013185, 0.014200, 0.013665, 0.013437, 0.013849, 0.013431, 0.014252, 0.013648, 0.013652, 0.013039, 0.013761, 0.013836, 0.013043, 0.013408, 0.013319, 0.013344, 0.014065, 0.013400, 0.012560, 0.013294, 0.012773, 0.012721, 0.013663, 0.012939, 0.012823, 0.013835, 0.012942, 0.013723, 0.013525};
1587 for(
Int_t i=0; i<400; i++){
1598 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.);
1599 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);
1608 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.);
1609 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);
1618 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.);
1619 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);
1628 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.);
1629 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);
1638 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.);
1639 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);
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)",0.15,40.);
1649 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);
1658 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.);
1659 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);
1669 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.);
1670 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);
1679 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.2,20.);
1680 fFuncWeight->SetParameters(2.70821e+03,2.98122e+00,8.67776e+01,1.16611e+00,1.17276e-02,5.41670e+00,6.01099e-02,-2.04524e+00,6.69208e-02);
1690 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.);
1691 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);
1701 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.);
1702 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);
1713 fFuncWeight=
new TF1(
"funcWeight",
"(x<28.5)*(([0]*x)/TMath::Power([2],(1+TMath::Power([3],x/[1])))+[4]*TMath::Exp([5]+[6]*x)+[7]*TMath::Exp([8]*x))+(x>=28.5)*0.140023",0.15,40);
1714 fFuncWeight->SetParameters(4.66092e+01, 4.27321e+01, 4.46858e+01, 1.67788e+00, -2.88457e-02, 4.40656e+00, -7.31064e-01, 2.96431e+00, -2.79976e-01);
1738 Double_t func1[4] = {0.322643,2.96275,2.30301,2.5};
1739 Double_t func2[4] = {0.36609,1.94635,1.40463,2.5};
1744 AliDebug(2,Form(
"pt = %f, FONLL = %f, Pythia = %f, ratio = %f",pt,dndpt_func1,dndpt_func2,dndpt_func1/dndpt_func2));
1745 return dndpt_func1/dndpt_func2;
1755 Double_t denom = TMath::Power((pt/par[1]), par[3] );
1756 Double_t dNdpt = par[0]*pt/TMath::Power(1.+denom, par[2]);
1771 if( (bin2>0) && (bin2<=histoNbins) ) {
1774 if(bin2==1) bin1=bin2+2;
1775 if(bin2==histoNbins) bin3=bin2-2;
1782 Double_t a=( (y_3-y_2)*(x_1-x_2) - (y_1-y_2)*(x_3-x_2) )/( (x_3*x_3-x_2*x_2)*(x_1-x_2) - (x_1*x_1-x_2*x_2)*(x_3-x_2) );
1783 Double_t b=((y_1-y_2)-a*(x_1*x_1-x_2*x_2))/(x_1-x_2);
1785 weight = a*pt*pt+b*pt+
c;
1796 if(runnumber>146824 || runnumber<146803)
return 1.0;
1798 Double_t func1[3] = {1.0, -0.5, 6.5 };
1799 Double_t func2[3] = {1.0, -0.5, 5.5 };
1804 return dzFunc1/dzFunc2;
1815 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]);
1824 if(nch<=0)
return 0.;
1828 Double_t weight = pMC>0 ? pMeas/pMC : 0.;
1841 Double_t nchbins[82]={0.50,1.50,2.50,3.50,4.50,5.50,6.50,7.50,8.50,9.50,
1842 10.50,11.50,12.50,13.50,14.50,15.50,16.50,17.50,18.50,19.50,
1843 20.50,21.50,22.50,23.50,24.50,25.50,26.50,27.50,28.50,29.50,
1844 30.50,31.50,32.50,33.50,34.50,35.50,36.50,37.50,38.50,39.50,
1845 40.50,41.50,42.50,43.50,44.50,45.50,46.50,47.50,48.50,49.50,
1846 50.50,51.50,52.50,53.50,54.50,55.50,56.50,57.50,58.50,59.50,
1847 60.50,62.50,64.50,66.50,68.50,70.50,72.50,74.50,76.50,78.50,
1848 80.50,82.50,84.50,86.50,88.50,90.50,92.50,94.50,96.50,98.50,
1850 Double_t pch[81]={0.062011,0.072943,0.070771,0.067245,0.062834,0.057383,0.051499,0.04591,0.041109,0.036954,
1851 0.03359,0.030729,0.028539,0.026575,0.024653,0.0229,0.021325,0.019768,0.018561,0.017187,
1852 0.01604,0.014836,0.013726,0.012576,0.011481,0.010393,0.009502,0.008776,0.008024,0.007452,
1853 0.006851,0.006428,0.00594,0.005515,0.005102,0.00469,0.004162,0.003811,0.003389,0.003071,
1854 0.002708,0.002422,0.002184,0.001968,0.00186,0.00165,0.001577,0.001387,0.001254,0.001118,
1855 0.001037,0.000942,0.000823,0.000736,0.000654,0.000579,0.000512,0.00049,0.00045,0.000355,
1856 0.000296,0.000265,0.000193,0.00016,0.000126,0.0000851, 0.0000676,0.0000537,0.0000426, 0.0000338,
1857 0.0000268,0.0000213,0.0000166,0.0000133,0.0000106,0.00000837,0.00000662, 0.00000524,0.00000414, 0.00000327,
1862 for(
Int_t i=0; i<81; i++){
1872 if(recoAnalysisCuts > 0){
1873 Int_t isKKpi=recoAnalysisCuts&1;
1874 Int_t ispiKK=recoAnalysisCuts&2;
1875 Int_t isPhiKKpi=recoAnalysisCuts&4;
1876 Int_t isPhipiKK=recoAnalysisCuts&8;
1877 Int_t isK0starKKpi=recoAnalysisCuts&16;
1878 Int_t isK0starpiKK=recoAnalysisCuts&32;
1880 if(isKKpi && isPhiKKpi) keep=kTRUE;
1881 if(ispiKK && isPhipiKK) keep=kTRUE;
1884 if(isKKpi && isK0starKKpi) keep=kTRUE;
1885 if(ispiKK && isK0starpiKK) keep=kTRUE;
1898 if (recoAnalysisCuts > 0){
1900 Int_t isK0Sp = recoAnalysisCuts&1;
1901 Int_t isLambdaBarpi = recoAnalysisCuts&2;
1902 Int_t isLambdapi = recoAnalysisCuts&4;
1905 if(isK0Sp) keep=kTRUE;
1908 if(isLambdaBarpi) keep=kTRUE;
1911 if(isLambdapi) keep=kTRUE;
1914 if (isK0Sp || isLambdaBarpi || isLambdapi) keep=kTRUE;
1927 Int_t runNo =
event->GetRunNumber();
1932 if (runNo>195343 && runNo<195484) period = 0;
1933 if (runNo>195528 && runNo<195678) period = 1;
1934 if (period<0 || period>1)
return 0;
1936 if(runNo>114930 && runNo<117223) period = 0;
1937 if(runNo>119158 && runNo<120830) period = 1;
1938 if(runNo>122373 && runNo<126438) period = 2;
1939 if(runNo>127711 && runNo<130841) period = 3;
1940 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.
void SetPtWeightsFromFONLL5overLHC16i2abc()
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
Bool_t FillRecoCasc(AliVEvent *event, AliAODRecoCascadeHF *rc, Bool_t isDStar, Bool_t recoSecVtx=kFALSE)
Double_t fRefMult
TProfile with mult vas. Z per period.
void SetPtWeightsFromFONLL276overLHC12a17a()
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
void SetPtWeightsFromFONLL5overLHC16i6a()
Class for cuts on AOD reconstructed D+->Kpipi.
void SetPtWeightsFromFONLL8overLHC15l2a2()
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.)
slow configuration, all variables
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 SetPtWeightsFromFONLL5andBAMPSoverLHC16i2abc()
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()
void SetPtWeightsFromFONLL5andTAMUoverLHC16i2abc()
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
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.
TList * OpenFile(const char *fname)