]>
Commit | Line | Data |
---|---|---|
eee60c30 | 1 | AliAnalysisTaskSESignificance *AddTaskSignificance(TString filename="cuts4SignifMaximDplus.root",Int_t decCh=0,Bool_t readMC=kFALSE,Int_t flagOPartAntiPart=0,Int_t nofsteps=8,AliAnalysisTaskSESignificance::FeedDownEnum fromcb=AliAnalysisTaskSESignificance::kBoth, TString usercomment = "username", TString cutsobjname="loosecuts") |
cbedddce | 2 | { |
3 | // | |
4 | // Test macro for the AliAnalysisTaskSE for D meson candidates | |
5 | // Invariant mass histogram and | |
6 | // association with MC truth (using MC info in AOD) | |
7 | // R. Bala, bala@to.infn.it | |
8 | // C. Bianchin, cbianchi@pd.infn.it | |
9 | // Get the pointer to the existing analysis manager via the static access method. | |
10 | //============================================================================ | |
11 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
12 | if (!mgr) { | |
795316ee | 13 | ::Error("AddTaskSignificance", "No analysis manager to connect to."); |
cbedddce | 14 | return NULL; |
15 | } | |
16 | ||
01e9725a | 17 | TFile* filecuts=TFile::Open(filename.Data()); |
e693cb03 | 18 | if(!filecuts ||(filecuts&& !filecuts->IsOpen())){ |
cbedddce | 19 | cout<<"Input file not found: exit"<<endl; |
20 | return; | |
21 | } | |
22 | ||
23 | AliRDHFCuts *analysiscuts=0x0; | |
24 | TString suffix=""; | |
f80a6da9 | 25 | TString suffix2=""; |
26 | if(flagOPartAntiPart==1) suffix2="P"; //P=particle, A=antiparticle | |
27 | if(flagOPartAntiPart==-1) suffix2="A"; | |
795316ee | 28 | if(fromcb==AliAnalysisTaskSESignificance::kCharmOnly) suffix2+="prompt"; |
29 | if(fromcb==AliAnalysisTaskSESignificance::kBeautyOnly) suffix2+="feeddown"; | |
cbedddce | 30 | |
eee60c30 | 31 | |
cbedddce | 32 | //Analysis cuts |
33 | switch (decCh){ | |
34 | case 0: | |
35 | analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname); | |
f80a6da9 | 36 | suffix=Form("Dplus%s",suffix2.Data()); |
cbedddce | 37 | break; |
38 | case 1: | |
39 | analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname); | |
f80a6da9 | 40 | suffix=Form("D0%s",suffix2.Data()); |
cbedddce | 41 | break; |
42 | case 2: | |
eee60c30 | 43 | analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(cutsobjname); |
f80a6da9 | 44 | suffix=Form("Dstar%s",suffix2.Data()); |
cbedddce | 45 | break; |
46 | case 3: | |
47 | analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname); | |
f80a6da9 | 48 | suffix=Form("Ds%s",suffix2.Data()); |
cbedddce | 49 | break; |
50 | case 4: | |
51 | analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname); | |
f80a6da9 | 52 | suffix=Form("D04%s",suffix2.Data()); |
cbedddce | 53 | break; |
54 | case 5: | |
83e7d8d8 | 55 | analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname); |
f80a6da9 | 56 | suffix=Form("Lc%s",suffix2.Data()); |
cbedddce | 57 | break; |
58 | } | |
59 | //ptbins | |
60 | ||
61 | if(!analysiscuts){ | |
62 | cout<<"Specific AliRDHFCuts not found"<<endl; | |
63 | return; | |
64 | } | |
065c884f | 65 | |
66 | TString centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality()); | |
67 | suffix+=centr; | |
68 | ||
cbedddce | 69 | const Int_t nptbins=analysiscuts->GetNPtBins(); |
70 | Float_t* ptbins=analysiscuts->GetPtBinLimits(); | |
71 | ||
72 | // Analysis task | |
73 | const Int_t npars=analysiscuts->GetNVarsForOpt();//numbers of var for opt | |
74 | Bool_t* varsforopt=analysiscuts->GetVarsForOpt(); | |
75 | cout<<"pt bins= "<<nptbins<<" varsforopt= "<<npars<<" nvars= "<<analysiscuts->GetNVars()<<endl; | |
76 | Int_t* nofcells=new Int_t[npars];//={4,4,4,4}; | |
77 | Float_t** looses; | |
78 | looses=new Float_t*[npars]; | |
79 | Float_t** tights; | |
80 | tights=new Float_t*[npars]; | |
81 | TString axisTitle[npars]; | |
82 | TString parname=""; | |
83 | ||
84 | for (Int_t ivop=0;ivop<npars;ivop++){ | |
85 | looses[ivop]=new Float_t[nptbins]; | |
86 | tights[ivop]=new Float_t[nptbins]; | |
f80a6da9 | 87 | nofcells[ivop]=nofsteps; |
cbedddce | 88 | } |
89 | ||
90 | Int_t count=0; | |
91 | ||
92 | for (Int_t ip=0;ip<nptbins;ip++){ | |
93 | for(Int_t iv=0;iv<analysiscuts->GetNVars();iv++){ | |
94 | if(varsforopt[iv]){ | |
95 | looses[count][ip]=analysiscuts->GetCutValue(iv,ip); | |
96 | axisTitle[count]=(analysiscuts->GetVarNames())[iv]; | |
97 | parname=Form("par%dptbin%d",count,ip); | |
98 | TParameter<float>* par=(TParameter<float>*)filecuts->Get(parname.Data()); | |
99 | tights[count][ip]=par->GetVal(); | |
100 | count++; | |
101 | } | |
102 | } | |
103 | count=0; | |
104 | } | |
105 | ||
106 | //creation TList of AliMultiDimVector | |
107 | TList *listMDV=new TList(); | |
108 | listMDV->SetOwner(); | |
109 | listMDV->SetName("listMDV"); | |
110 | ||
111 | for (Int_t ip=0;ip<nptbins;ip++){ | |
112 | Float_t *loosescut=new Float_t[npars]; | |
113 | Float_t *tightscut=new Float_t[npars]; | |
114 | for(Int_t i=0;i<npars;i++){ | |
115 | loosescut[i]=looses[i][ip]; | |
116 | tightscut[i]=tights[i][ip]; | |
117 | } | |
118 | Float_t ptbincut[2]={ptbins[ip],ptbins[ip+1]}; | |
119 | TString mdvname=Form("multiDimVectorPtBin%d",ip); | |
120 | AliMultiDimVector *mv=new AliMultiDimVector(mdvname.Data(),"MultiDimVector",1,ptbincut,npars,nofcells,loosescut,tightscut,axisTitle); | |
121 | listMDV->Add(mv); | |
122 | } | |
123 | ||
124 | AliAnalysisTaskSESignificance *sigTask = new AliAnalysisTaskSESignificance("SignificanceAnalysis",listMDV,analysiscuts,decCh,AliRDHFCuts::kAll);//AliRDHFCuts::kCandidate | |
125 | sigTask->SetReadMC(readMC); | |
795316ee | 126 | sigTask->SetBFeedDown(fromcb); |
bb4bb9fc | 127 | sigTask->SetDebugLevel(0); |
f80a6da9 | 128 | sigTask->SetFillWithPartAntiPartBoth(flagOPartAntiPart); |
bb4bb9fc | 129 | sigTask->SetUseSelBit(kTRUE); |
cbedddce | 130 | mgr->AddTask(sigTask); |
131 | ||
132 | TString contname=Form("cinputSig%s",suffix.Data()); | |
133 | // Create containers for input/output | |
134 | AliAnalysisDataContainer *cinputSig = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer); | |
135 | TString outputfile = AliAnalysisManager::GetCommonFileName(); | |
eee60c30 | 136 | usercomment = "_" + usercomment; |
cbedddce | 137 | TString outputhistos = outputfile += ":PWG3_D2H_Significance"; |
eee60c30 | 138 | outputhistos += usercomment; |
139 | ||
cbedddce | 140 | contname=Form("coutputSig%s",suffix.Data()); |
eee60c30 | 141 | contname += usercomment; |
cbedddce | 142 | AliAnalysisDataContainer *coutputSig = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); |
143 | contname=Form("coutputmv%s",suffix.Data()); | |
eee60c30 | 144 | contname += usercomment; |
cbedddce | 145 | AliAnalysisDataContainer *coutputmv = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); |
795316ee | 146 | contname=Form("cloosecuts%s",suffix.Data()); |
eee60c30 | 147 | contname += usercomment; |
795316ee | 148 | AliAnalysisDataContainer *coutputcuts = mgr->CreateContainer(contname.Data(),AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data()); |
cbedddce | 149 | |
150 | ||
151 | mgr->ConnectInput(sigTask,0,mgr->GetCommonInputContainer()); | |
152 | ||
153 | mgr->ConnectOutput(sigTask,1,coutputSig); | |
154 | ||
155 | mgr->ConnectOutput(sigTask,2,coutputmv); | |
795316ee | 156 | |
157 | mgr->ConnectOutput(sigTask,3,coutputcuts); | |
cbedddce | 158 | |
159 | return sigTask; | |
160 | } | |
161 | ||
eee60c30 | 162 |