]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/macros/AddTaskSignificance.C
Update (ChiaraB)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / macros / AddTaskSignificance.C
CommitLineData
cbedddce 1AliAnalysisTaskSESignificance *AddTaskSignificance(TString filename="cuts4SignifMaxim.root",Int_t decCh=1,Bool_t readMC=kFALSE)
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) {
13 ::Error("AddTaskSignificance", "No analysis manager to connect to.");
14 return NULL;
15 }
16
17 TFile* filecuts=new TFile(filename.Data());
18 if(!filecuts->IsOpen()){
19 cout<<"Input file not found: exit"<<endl;
20 return;
21 }
22
23 AliRDHFCuts *analysiscuts=0x0;
24 TString suffix="";
25
26 TString cutsobjname="loosercuts";
27 //Analysis cuts
28 switch (decCh){
29 case 0:
30 analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
31 suffix="Dplus";
32 break;
33 case 1:
34 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
35 suffix="D0";
36 break;
37 case 2:
38 analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);
39 suffix="Dstar";
40 break;
41 case 3:
42 analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);
43 suffix="Ds";
44 break;
45 case 4:
46 analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);
47 suffix="D04";
48 break;
49 case 5:
83e7d8d8 50 analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);
cbedddce 51 suffix="Lc";
52 break;
53 }
54 //ptbins
55
56 if(!analysiscuts){
57 cout<<"Specific AliRDHFCuts not found"<<endl;
58 return;
59 }
60
61 const Int_t nptbins=analysiscuts->GetNPtBins();
62 Float_t* ptbins=analysiscuts->GetPtBinLimits();
63
64 // Analysis task
65 const Int_t npars=analysiscuts->GetNVarsForOpt();//numbers of var for opt
66 Bool_t* varsforopt=analysiscuts->GetVarsForOpt();
67 cout<<"pt bins= "<<nptbins<<" varsforopt= "<<npars<<" nvars= "<<analysiscuts->GetNVars()<<endl;
68 Int_t* nofcells=new Int_t[npars];//={4,4,4,4};
69 Float_t** looses;
70 looses=new Float_t*[npars];
71 Float_t** tights;
72 tights=new Float_t*[npars];
73 TString axisTitle[npars];
74 TString parname="";
75
76 for (Int_t ivop=0;ivop<npars;ivop++){
77 looses[ivop]=new Float_t[nptbins];
78 tights[ivop]=new Float_t[nptbins];
79 nofcells[ivop]=4;
80 }
81
82 Int_t count=0;
83
84 for (Int_t ip=0;ip<nptbins;ip++){
85 for(Int_t iv=0;iv<analysiscuts->GetNVars();iv++){
86 if(varsforopt[iv]){
87 looses[count][ip]=analysiscuts->GetCutValue(iv,ip);
88 axisTitle[count]=(analysiscuts->GetVarNames())[iv];
89 parname=Form("par%dptbin%d",count,ip);
90 TParameter<float>* par=(TParameter<float>*)filecuts->Get(parname.Data());
91 tights[count][ip]=par->GetVal();
92 count++;
93 }
94 }
95 count=0;
96 }
97
98 //creation TList of AliMultiDimVector
99 TList *listMDV=new TList();
100 listMDV->SetOwner();
101 listMDV->SetName("listMDV");
102
103 for (Int_t ip=0;ip<nptbins;ip++){
104 Float_t *loosescut=new Float_t[npars];
105 Float_t *tightscut=new Float_t[npars];
106 for(Int_t i=0;i<npars;i++){
107 loosescut[i]=looses[i][ip];
108 tightscut[i]=tights[i][ip];
109 }
110 Float_t ptbincut[2]={ptbins[ip],ptbins[ip+1]};
111 TString mdvname=Form("multiDimVectorPtBin%d",ip);
112 AliMultiDimVector *mv=new AliMultiDimVector(mdvname.Data(),"MultiDimVector",1,ptbincut,npars,nofcells,loosescut,tightscut,axisTitle);
113 listMDV->Add(mv);
114 }
115
116 AliAnalysisTaskSESignificance *sigTask = new AliAnalysisTaskSESignificance("SignificanceAnalysis",listMDV,analysiscuts,decCh,AliRDHFCuts::kAll);//AliRDHFCuts::kCandidate
117 sigTask->SetReadMC(readMC);
118 //sigTask->SetDoLikeSign(kTRUE);
119 sigTask->SetDebugLevel(3);
120 mgr->AddTask(sigTask);
121
122 TString contname=Form("cinputSig%s",suffix.Data());
123 // Create containers for input/output
124 AliAnalysisDataContainer *cinputSig = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);
125 TString outputfile = AliAnalysisManager::GetCommonFileName();
126 TString outputhistos = outputfile += ":PWG3_D2H_Significance";
127 contname=Form("coutputSig%s",suffix.Data());
128 AliAnalysisDataContainer *coutputSig = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
129 contname=Form("coutputmv%s",suffix.Data());
130 AliAnalysisDataContainer *coutputmv = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
131
132
133 mgr->ConnectInput(sigTask,0,mgr->GetCommonInputContainer());
134
135 mgr->ConnectOutput(sigTask,1,coutputSig);
136
137 mgr->ConnectOutput(sigTask,2,coutputmv);
138
139 return sigTask;
140}
141