const Float_t centmin_0_10 = 0.;
const Float_t centmax_0_10 = 10.;
-const Float_t centmin_10_100 = 10.;
-const Float_t centmax_10_100 = 100.;
+const Float_t centmin_10_60 = 10.;
+const Float_t centmax_10_60 = 60.;
+const Float_t centmin_60_100 = 60.;
+const Float_t centmax_60_100 = 100.;
const Float_t centmax = 100.;
const Float_t fakemin = -0.5;
const Float_t fakemax = 2.5.;
//----------------------------------------------------
-AliCFTaskVertexingHF *AddTaskCFVertexingHF3ProngDs(const char* cutFile = "./DstoKKpiCuts.root", Int_t configuration = AliCFTaskVertexingHF::kSnail, Bool_t isKeepDfromB=kFALSE, Bool_t isKeepDfromBOnly=kFALSE, Int_t pdgCode = 431, Char_t isSign = 2)
+AliCFTaskVertexingHF *AddTaskCFVertexingHF3ProngDs(TString suffixName="", Int_t decayOption=AliCFVertexingHF3Prong::kCountResonant, const char* cutFile = "./DstoKKpiCuts.root", Int_t configuration = AliCFTaskVertexingHF::kSnail, Bool_t isKeepDfromB=kFALSE, Bool_t isKeepDfromBOnly=kFALSE, Int_t pdgCode = 431, Char_t isSign = 2)
//AliCFContainer *AddTaskCFVertexingHF3ProngDs(const char* cutFile = "./DstoKKpiCuts.root", Int_t configuration = AliCFTaskVertexingHF::kSnail, Bool_t isKeepDfromB=kFALSE, Bool_t isKeepDfromBOnly=kFALSE, Int_t pdgCode = 431, Char_t isSign = 2)
{
printf("Addig CF task using cuts from file %s\n",cutFile);
printf("pT: nbin (from cuts file) = %d\n",nbinpt);
const Int_t nbiny = 24 ; //bins in y
const Int_t nbinphi = 18 ; //bins in phi
- const Int_t nbincT = 25 ; //bins in cT
+ const Int_t nbincT = 2 ; //bins in cT
const Int_t nbinpointing = 350 ; //bins in cosPointingAngle
const Int_t nbinpT1_0_4 = 8 ; //bins in pt1 from 0 to 4 GeV
const Int_t nbinpT1_4_8 = 4 ; //bins in pt1 from 4 to 8 GeV
const Int_t nbinpT3_4_8 = 4 ; //bins in pt3 from 4 to 8 GeV
const Int_t nbinpT3_8_10 = 1 ; //bins in pt3 from 8 to 10 GeV
const Int_t nbinzvtx = 30 ; //bins in z vertex
- const Int_t nbincent = 11; //bins in centrality
- const Int_t nbincent_0_10 = 2; //bins in centrality between 0 and 10
- const Int_t nbincent_10_100 = 9; //bins in centrality between 10 and 100
+ const Int_t nbincent = 18; //bins in centrality
+ const Int_t nbincent_0_10 = 4; //bins in centrality between 0 and 10
+ const Int_t nbincent_10_60 = 10; //bins in centrality between 10 and 60
+ const Int_t nbincent_60_100 = 4; //bins in centrality between 60 and 100
const Int_t nbinfake = 3; //bins in fake
const Int_t nbinpointingXY = 50; //bins in cosPointingAngleXY
const Int_t nbinnormDecayLXY = 20; //bins in NormDecayLengthXY
binLimzvtx[i]=(Double_t)zvtxmin + (zvtxmax-zvtxmin) /nbinzvtx*(Double_t)i ;
}
- // centrality
+ // centrality
for(Int_t i=0; i<=nbincent_0_10; i++) binLimcent[i]=(Double_t)centmin_0_10 + (centmax_0_10-centmin_0_10)/nbincent_0_10*(Double_t)i ;
- if (binLimcent[nbincent_0_10] != centmin_10_100) {
- Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for cent - 1st range - differs from expected!\n");
+ if (binLimcent[nbincent_0_10] != centmin_10_60) {
+ Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for cent - 1st range - differs from expected!\n");
}
- for(Int_t i=0; i<=nbincent_10_100; i++) binLimcent[i+nbincent_0_10]=(Double_t)centmin_10_100 + (centmax_10_100-centmin_10_100)/nbincent_10_100*(Double_t)i ;
+ for(Int_t i=0; i<=nbincent_10_60; i++) binLimcent[i+nbincent_0_10]=(Double_t)centmin_10_60 + (centmax_10_60-centmin_10_60)/nbincent_10_60*(Double_t)i ;
+ if (binLimcent[nbincent_0_10+nbincent_10_60] != centmin_60_100) {
+ Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for cent - 2st range - differs from expected!\n");
+ }
+ for(Int_t i=0; i<=nbincent_60_100; i++) binLimcent[i+nbincent_0_10+nbincent_10_60]=(Double_t)centmin_60_100 + (centmax_60_100-centmin_60_100)/nbincent_60_100*(Double_t)i ;
// fake
for(Int_t i=0; i<=nbinfake; i++) {
Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for mult - 2nd range - differs from expected!\n");
}
for(Int_t i=0; i<=nbinmult_50_102; i++) binLimmult[i+nbinmult_0_20+nbinmult_20_50]=(Double_t)multmin_50_102 + (multmax_50_102-multmin_50_102)/nbinmult_50_102*(Double_t)i ;
-
+
+ TString suffixDecayType="";
+ if(decayOption==AliCFVertexingHF3Prong::kCountAllDsKKpi) suffixDecayType="_All";
+ else if(decayOption==AliCFVertexingHF3Prong::kCountPhipi) suffixDecayType="_Phi";
+ else if(decayOption==AliCFVertexingHF3Prong::kCountK0stK) suffixDecayType="_K0star";
+ else if(decayOption==AliCFVertexingHF3Prong::kCountResonant) suffixDecayType="_Reson";
+ else if(decayOption==AliCFVertexingHF3Prong::kCountNonResonant) suffixDecayType="_NonReson";
+
//one "container" for MC
TString nameContainer="";
if(!isKeepDfromB) {
- nameContainer="CFHFccontainer0_3Prong_CommonFramework";
+ nameContainer="CFHFccontainer0_3ProngDstoKKpi_CommonFramework";
}
else if(isKeepDfromBOnly){
- nameContainer="CFHFccontainer0DfromB_3Prong_CommonFramework";
+ nameContainer="CFHFccontainer0DfromB_3ProngDstoKKpi_CommonFramework";
}
else {
- nameContainer="CFHFccontainer0allD_3Prong_CommonFramework";
+ nameContainer="CFHFccontainer0allD_3ProngDstoKKpi_CommonFramework";
}
+ nameContainer+=suffixDecayType.Data();
+ nameContainer+=suffixName.Data();
AliCFContainer* container;
if (configuration == AliCFTaskVertexingHF::kSnail){
AliCFTaskVertexingHF *task = new AliCFTaskVertexingHF("AliCFTaskVertexingHF",cutsDstoKKpi);
task->SetFillFromGenerated(kFALSE);
task->SetDecayChannel(33);
+ if(decayOption==AliCFVertexingHF3Prong::kCountAllDsKKpi) task->SetCountAllDs();
+ else if(decayOption==AliCFVertexingHF3Prong::kCountPhipi) task->SetCountDsViaPhi();
+ else if(decayOption==AliCFVertexingHF3Prong::kCountK0stK) task->SetCountDsViaK0star();
+ else if(decayOption==AliCFVertexingHF3Prong::kCountResonant) task->SetCountResonantDs();
+ else if(decayOption==AliCFVertexingHF3Prong::kCountNonResonant) task->SetCountNonResonantDs();
task->SetUseWeight(kFALSE);
task->SetCFManager(man); //here is set the CF manager
task->SetSign(isSign);
TString nameCorr="";
if(!isKeepDfromB) {
- nameCorr="CFHFcorr0_3Prong_CommonFramework";
+ nameCorr="CFHFcorr0_3ProngDstoKKpi_CommonFramework";
}
else if(isKeepDfromBOnly){
- nameCorr= "CFHFcorr0KeepDfromBOnly_3Prong_CommonFramework";
+ nameCorr= "CFHFcorr0KeepDfromBOnly_3ProngDstoKKpi_CommonFramework";
}
else {
- nameCorr="CFHFcorr0allD_3Prong_CommonFramework";
+ nameCorr="CFHFcorr0allD_3ProngDstoKKpi_CommonFramework";
}
+ nameCorr+=suffixDecayType.Data();
+ nameCorr+=suffixName.Data();
THnSparseD* correlation = new THnSparseD(nameCorr,"THnSparse with correlations",4,thnDim);
Double_t** binEdges = new Double_t[2];
// ----- output data -----
TString outputfile = AliAnalysisManager::GetCommonFileName();
- TString output1name="", output2name="", output3name="", output4name="";;
+ TString output1name="", output2name="", output3name="", output4name="", output5name="";
output2name=nameContainer;
output3name=nameCorr;
+ output5name= "coutProfDs";
if(!isKeepDfromB) {
outputfile += ":PWG3_D2H_CFtaskDstoKKpi_CommonFramework";
- output1name="CFHFchist0_3Prong_CommonFramework";
+ output1name="CFHFchist0_3ProngDstoKKpi_CommonFramework";
+ output3name+="_cOnly";
+ output4name= "CutsDdirect_3ProngDs_CommonFramework";
+ output5name+="_cOnly";
}
else if(isKeepDfromBOnly){
outputfile += ":PWG3_D2H_CFtaskDstoKKpiKeepDfromBOnly_CommonFramework";
- output1name="CFHFchist0DfromB_3Prong_CommonFramework";
+ output1name="CFHFchist0DfromB_3ProngDstoKKpi_CommonFramework";
+ output3name+="_bOnly";
+ output4name= "CutsDfromB_3ProngDs_CommonFramework";
+ output5name+="_bOnly";
}
else{
outputfile += ":PWG3_D2H_CFtaskDstoKKpiKeepDfromB_CommonFramework";
- output1name="CFHFchist0allD_3Prong_CommonFramework";
+ output1name="CFHFchist0allD_3ProngDstoKKpi_CommonFramework";
+ output3name+="_all";
+ output4name= "CutsallD_3ProngDs_CommonFramework";
+ output5name+="_all";
}
- output4name= "Cuts_3Prong_CommonFramework";
+ outputfile += suffixDecayType.Data();
+ output1name+= suffixDecayType.Data();
+ output4name+= suffixDecayType.Data();
+ output5name+= suffixDecayType.Data();
+
+ outputfile += suffixName.Data();
+ output1name+= suffixName.Data();
+ output4name+= suffixName.Data();
+ output5name+= suffixName.Data();
//now comes user's output objects :
// output TH1I for event counting
// Unfolding - correlation matrix
AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(output3name, THnSparseD::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(output4name, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());
+ // estimators list
+ AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(output5name, TList::Class(),AliAnalysisManager::kOutputContainer, outputfile.Data());
mgr->AddTask(task);
mgr->ConnectOutput(task,2,coutput2);
mgr->ConnectOutput(task,3,coutput3);
mgr->ConnectOutput(task,4,coutput4);
+ mgr->ConnectOutput(task,5,coutput5);
return task;
}
-