]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/macros/AddTaskD0Mass.C
Update (Chiara Z)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / macros / AddTaskD0Mass.C
CommitLineData
a220990f 1AliAnalysisTaskSED0Mass *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}