]>
Commit | Line | Data |
---|---|---|
a220990f | 1 | AliAnalysisTaskSED0Mass *AddTaskD0Mass(Int_t flag=0/*0 = D0,1 = LS*/,Bool_t readMC=kFALSE,Bool_t filldistr=kFALSE,Bool_t cutOnDistr=kFALSE,Int_t system=0/*0=pp,1=PbPb*/,Int_t flagD0D0bar=0,TString finname="D0toKpiCuts.root") |
95e5b6b5 | 2 | { |
3 | // | |
4 | // AddTask for the AliAnalysisTaskSE for D0 candidates | |
5 | // invariant mass histogram and association with MC truth | |
6 | // (using MC info in AOD) and cut variables distributions | |
7 | // C.Bianchin chiara.bianchin@pd.infn.it | |
8 | // | |
9 | ||
10 | ||
11 | // Get the pointer to the existing analysis manager via the static access method. | |
12 | //============================================================================== | |
13 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
14 | if (!mgr) { | |
15 | ::Error("AddTaskD0Distr", "No analysis manager to connect to."); | |
16 | return NULL; | |
17 | } | |
18 | ||
a96083b9 | 19 | TString filename="",out1name="",out2name="",out3name="",out4name="",out5name="",out6name="",inname=""; |
95e5b6b5 | 20 | filename = AliAnalysisManager::GetCommonFileName(); |
21 | filename += ":PWG3_D2H_"; | |
22 | if(flag==0){ | |
23 | filename+="D0InvMass"; | |
24 | if(cutOnDistr) filename+="C"; | |
449b1302 | 25 | if(flagD0D0bar==1)filename+="D0"; |
26 | if(flagD0D0bar==2)filename+="D0bar"; | |
95e5b6b5 | 27 | //list mass |
449b1302 | 28 | out1name="coutputmassD0Mass"; |
95e5b6b5 | 29 | if(cutOnDistr) out1name+="C"; |
449b1302 | 30 | if(flagD0D0bar==1)out1name+="D0"; |
31 | if(flagD0D0bar==2)out1name+="D0bar"; | |
95e5b6b5 | 32 | //list distr |
449b1302 | 33 | out2name="coutputmassD0distr"; |
95e5b6b5 | 34 | if(cutOnDistr) out2name+="C"; |
449b1302 | 35 | if(flagD0D0bar==1)out2name+="D0"; |
36 | if(flagD0D0bar==2)out2name+="D0bar"; | |
37 | //hist entries | |
38 | out3name="nEntriesD0"; | |
95e5b6b5 | 39 | if(cutOnDistr) out3name+="C"; |
449b1302 | 40 | if(flagD0D0bar==1)out3name+="D0"; |
41 | if(flagD0D0bar==2)out3name+="D0bar"; | |
50027560 | 42 | //cuts object |
43 | out4name="cutsD0"; | |
95e5b6b5 | 44 | if(cutOnDistr) out4name+="C"; |
449b1302 | 45 | if(flagD0D0bar==1)out4name+="D0"; |
46 | if(flagD0D0bar==2)out4name+="D0bar"; | |
50027560 | 47 | |
48 | //AliNormalizationCounter | |
49 | out5name="normalizationCounter"; | |
95e5b6b5 | 50 | if(cutOnDistr) out5name+="C"; |
449b1302 | 51 | if(flagD0D0bar==1)out5name+="D0"; |
52 | if(flagD0D0bar==2)out5name+="D0bar"; | |
95e5b6b5 | 53 | |
449b1302 | 54 | inname="cinputmassD0_0"; |
95e5b6b5 | 55 | if(cutOnDistr) inname+="C"; |
449b1302 | 56 | if(flagD0D0bar==1)inname+="D0"; |
57 | if(flagD0D0bar==2)inname+="D0bar"; | |
95e5b6b5 | 58 | |
59 | } else { | |
60 | filename+="D0InvMassLikeSign"; | |
61 | if(cutOnDistr) filename+="C"; | |
449b1302 | 62 | if(flagD0D0bar==1)filename+="D0"; |
63 | if(flagD0D0bar==2)filename+="D0bar"; | |
95e5b6b5 | 64 | //list mass |
449b1302 | 65 | out1name="coutputmassLSMass"; |
95e5b6b5 | 66 | if(cutOnDistr) out1name+="C"; |
449b1302 | 67 | if(flagD0D0bar==1)out1name+="D0"; |
68 | if(flagD0D0bar==2)out1name+="D0bar"; | |
95e5b6b5 | 69 | //list distr |
449b1302 | 70 | out2name="coutputmassLSdistr"; |
95e5b6b5 | 71 | if(cutOnDistr) out2name+="C"; |
449b1302 | 72 | if(flagD0D0bar==1)out2name+="D0"; |
73 | if(flagD0D0bar==2)out2name+="D0bar"; | |
74 | //hist entries | |
75 | out3name="nEntriesLS"; | |
95e5b6b5 | 76 | if(cutOnDistr) out3name+="C"; |
449b1302 | 77 | if(flagD0D0bar==1)out3name+="D0"; |
78 | if(flagD0D0bar==2)out3name+="D0bar"; | |
50027560 | 79 | //cuts object |
80 | out4name="cutsLS"; | |
95e5b6b5 | 81 | if(cutOnDistr) out4name+="C"; |
449b1302 | 82 | if(flagD0D0bar==1)out4name+="D0"; |
83 | if(flagD0D0bar==2)out4name+="D0bar"; | |
95e5b6b5 | 84 | |
449b1302 | 85 | inname="cinputmassD0_1"; |
95e5b6b5 | 86 | if(cutOnDistr) inname+="C"; |
449b1302 | 87 | if(flagD0D0bar==1)inname+="D0"; |
88 | if(flagD0D0bar==2)inname+="D0bar"; | |
95e5b6b5 | 89 | } |
95e5b6b5 | 90 | |
4e61a020 | 91 | //setting my cut values |
95e5b6b5 | 92 | |
4e61a020 | 93 | //cuts order |
94 | // printf(" |M-MD0| [GeV] < %f\n",fD0toKpiCuts[0]); | |
95 | // printf(" dca [cm] < %f\n",fD0toKpiCuts[1]); | |
96 | // printf(" cosThetaStar < %f\n",fD0toKpiCuts[2]); | |
97 | // printf(" pTK [GeV/c] > %f\n",fD0toKpiCuts[3]); | |
98 | // printf(" pTpi [GeV/c] > %f\n",fD0toKpiCuts[4]); | |
99 | // printf(" |d0K| [cm] < %f\n",fD0toKpiCuts[5]); | |
100 | // printf(" |d0pi| [cm] < %f\n",fD0toKpiCuts[6]); | |
101 | // printf(" d0d0 [cm^2] < %f\n",fD0toKpiCuts[7]); | |
102 | // printf(" cosThetaPoint > %f\n",fD0toKpiCuts[8]); | |
103 | ||
50027560 | 104 | Bool_t stdcuts=kFALSE; |
4e61a020 | 105 | TFile* filecuts=new TFile(finname.Data()); |
106 | if(!filecuts->IsOpen()){ | |
50027560 | 107 | cout<<"Input file not found: using std cut object"<<endl; |
108 | stdcuts=kTRUE; | |
95e5b6b5 | 109 | } |
95e5b6b5 | 110 | |
4e61a020 | 111 | AliRDHFCutsD0toKpi* RDHFD0toKpi=new AliRDHFCutsD0toKpi(); |
a220990f | 112 | if(stdcuts) { |
113 | if(system==0) RDHFD0toKpi->SetStandardCutsPP2010(); | |
114 | else RDHFD0toKpi->SetStandardCutsPbPb2010(); | |
115 | } | |
50027560 | 116 | else RDHFD0toKpi = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts"); |
4e61a020 | 117 | RDHFD0toKpi->SetName(Form("D0toKpiCuts%d",flag)); |
118 | ||
119 | if(!RDHFD0toKpi){ | |
120 | cout<<"Specific AliRDHFCuts not found"<<endl; | |
121 | return; | |
122 | } | |
95e5b6b5 | 123 | |
065c884f | 124 | TString centr=Form("%.0f%.0f",RDHFD0toKpi->GetMinCentrality(),RDHFD0toKpi->GetMaxCentrality()); |
125 | out1name+=centr; | |
126 | out2name+=centr; | |
127 | out3name+=centr; | |
128 | out4name+=centr; | |
129 | out5name+=centr; | |
130 | inname+=centr; | |
131 | ||
95e5b6b5 | 132 | // Aanalysis task |
133 | TString taskname="MassAndDistrAnalysis"; | |
134 | if (flag==0)taskname.Prepend("D0"); | |
135 | else taskname.Prepend("LS"); | |
136 | AliAnalysisTaskSED0Mass *massD0Task = new AliAnalysisTaskSED0Mass(taskname.Data(),RDHFD0toKpi); | |
a8ce111e | 137 | massD0Task->SetDebugLevel(0); |
95e5b6b5 | 138 | massD0Task->SetArray(flag); |
139 | massD0Task->SetReadMC(readMC); | |
140 | massD0Task->SetCutOnDistr(cutOnDistr); | |
6b3e3c78 | 141 | massD0Task->SetUsePid4Distr(kFALSE); |
449b1302 | 142 | massD0Task->SetFillOnlyD0D0bar(flagD0D0bar); |
a220990f | 143 | massD0Task->SetSystem(system); //0=pp, 1=PbPb |
144 | massD0Task->SetFillVarHists(filldistr); // default is FALSE if System=PbPb | |
a8ce111e | 145 | |
95e5b6b5 | 146 | mgr->AddTask(massD0Task); |
147 | ||
148 | // | |
149 | // Create containers for input/output | |
150 | AliAnalysisDataContainer *cinputmassD0 = mgr->CreateContainer(inname,TChain::Class(), | |
151 | AliAnalysisManager::kInputContainer); | |
152 | ||
153 | AliAnalysisDataContainer *coutputmassD01 = mgr->CreateContainer(out1name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //mass | |
154 | AliAnalysisDataContainer *coutputmassD02 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //distr | |
155 | AliAnalysisDataContainer *coutputmassD03 = mgr->CreateContainer(out3name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //nev | |
50027560 | 156 | AliAnalysisDataContainer *coutputmassD04 = mgr->CreateContainer(out4name,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts |
157 | AliAnalysisDataContainer *coutputmassD05 = mgr->CreateContainer(out5name,AliNormalizationCounter::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //counter | |
4e61a020 | 158 | |
95e5b6b5 | 159 | mgr->ConnectInput(massD0Task,0,mgr->GetCommonInputContainer()); |
160 | ||
161 | mgr->ConnectOutput(massD0Task,1,coutputmassD01); | |
162 | mgr->ConnectOutput(massD0Task,2,coutputmassD02); | |
163 | mgr->ConnectOutput(massD0Task,3,coutputmassD03); | |
164 | mgr->ConnectOutput(massD0Task,4,coutputmassD04); | |
165 | mgr->ConnectOutput(massD0Task,5,coutputmassD05); | |
166 | ||
167 | ||
168 | return massD0Task; | |
169 | } |