]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/macros/AddTaskSignificance.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskSignificance.C
CommitLineData
eee60c30 1AliAnalysisTaskSESignificance *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