]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/vertexingHF/macros/AddTaskSignificance.C
Changes for the Lambdac (Chiara, Rossella)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / macros / AddTaskSignificance.C
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