]>
Commit | Line | Data |
---|---|---|
1 | AliAnalysisTaskSESignificance *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: | |
50 | analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname); | |
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 |