1 AliAnalysisTaskSESignificance *AddTaskSignificance(TString filename="cuts4SignifMaximDplus.root",Int_t decCh=0,Bool_t readMC=kFALSE,Int_t flagOPartAntiPart=0,Int_t nofsteps=8)
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();
13 ::Error("AddTaskSignificanceN", "No analysis manager to connect to.");
17 TFile* filecuts=new TFile(filename.Data());
18 if(!filecuts->IsOpen()){
19 cout<<"Input file not found: exit"<<endl;
23 AliRDHFCuts *analysiscuts=0x0;
26 if(flagOPartAntiPart==1) suffix2="P"; //P=particle, A=antiparticle
27 if(flagOPartAntiPart==-1) suffix2="A";
29 TString cutsobjname="loosercuts";
33 analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
34 suffix=Form("Dplus%s",suffix2.Data());
37 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
38 suffix=Form("D0%s",suffix2.Data());
41 analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);
42 suffix=Form("Dstar%s",suffix2.Data());
45 analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);
46 suffix=Form("Ds%s",suffix2.Data());
49 analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);
50 suffix=Form("D04%s",suffix2.Data());
53 analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);
54 suffix=Form("Lc%s",suffix2.Data());
60 cout<<"Specific AliRDHFCuts not found"<<endl;
64 const Int_t nptbins=analysiscuts->GetNPtBins();
65 Float_t* ptbins=analysiscuts->GetPtBinLimits();
68 const Int_t npars=analysiscuts->GetNVarsForOpt();//numbers of var for opt
69 Bool_t* varsforopt=analysiscuts->GetVarsForOpt();
70 cout<<"pt bins= "<<nptbins<<" varsforopt= "<<npars<<" nvars= "<<analysiscuts->GetNVars()<<endl;
71 Int_t* nofcells=new Int_t[npars];//={4,4,4,4};
73 looses=new Float_t*[npars];
75 tights=new Float_t*[npars];
76 TString axisTitle[npars];
79 for (Int_t ivop=0;ivop<npars;ivop++){
80 looses[ivop]=new Float_t[nptbins];
81 tights[ivop]=new Float_t[nptbins];
82 nofcells[ivop]=nofsteps;
87 for (Int_t ip=0;ip<nptbins;ip++){
88 for(Int_t iv=0;iv<analysiscuts->GetNVars();iv++){
90 looses[count][ip]=analysiscuts->GetCutValue(iv,ip);
91 axisTitle[count]=(analysiscuts->GetVarNames())[iv];
92 parname=Form("par%dptbin%d",count,ip);
93 TParameter<float>* par=(TParameter<float>*)filecuts->Get(parname.Data());
94 tights[count][ip]=par->GetVal();
101 //creation TList of AliMultiDimVector
102 TList *listMDV=new TList();
104 listMDV->SetName("listMDV");
106 for (Int_t ip=0;ip<nptbins;ip++){
107 Float_t *loosescut=new Float_t[npars];
108 Float_t *tightscut=new Float_t[npars];
109 for(Int_t i=0;i<npars;i++){
110 loosescut[i]=looses[i][ip];
111 tightscut[i]=tights[i][ip];
113 Float_t ptbincut[2]={ptbins[ip],ptbins[ip+1]};
114 TString mdvname=Form("multiDimVectorPtBin%d",ip);
115 AliMultiDimVector *mv=new AliMultiDimVector(mdvname.Data(),"MultiDimVector",1,ptbincut,npars,nofcells,loosescut,tightscut,axisTitle);
119 AliAnalysisTaskSESignificance *sigTask = new AliAnalysisTaskSESignificance("SignificanceAnalysis",listMDV,analysiscuts,decCh,AliRDHFCuts::kAll);//AliRDHFCuts::kCandidate
120 sigTask->SetReadMC(readMC);
121 //sigTask->SetDoLikeSign(kTRUE);
122 //sigTask->SetBFeedDown(AliAnalysisTaskSESignificance::kBoth);
123 sigTask->SetDebugLevel(3);
124 sigTask->SetFillWithPartAntiPartBoth(flagOPartAntiPart);
125 mgr->AddTask(sigTask);
127 TString contname=Form("cinputSig%s",suffix.Data());
128 // Create containers for input/output
129 AliAnalysisDataContainer *cinputSig = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);
130 TString outputfile = AliAnalysisManager::GetCommonFileName();
131 TString outputhistos = outputfile += ":PWG3_D2H_Significance";
132 contname=Form("coutputSig%s",suffix.Data());
133 AliAnalysisDataContainer *coutputSig = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
134 contname=Form("coutputmv%s",suffix.Data());
135 AliAnalysisDataContainer *coutputmv = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
138 mgr->ConnectInput(sigTask,0,mgr->GetCommonInputContainer());
140 mgr->ConnectOutput(sigTask,1,coutputSig);
142 mgr->ConnectOutput(sigTask,2,coutputmv);