Coverity fixes (Philippe, Ivana)
[u/mrichter/AliRoot.git] / PWG3 / base / runAnalysisTaskPtMothFromPtDaug.C
CommitLineData
522851fb 1void runAnalysisTaskPtMothFromPtDaug(TH1F* histPtDaug=0x0,
2 Bool_t readKineFromNtupla=kTRUE,const char* galiceList="galice.txt")
3 {
4/////////////////////////////////////////////////////////////////////////////
5// Run-macro to extract pt-spectra (and ptMin-spectra) for mothers //
6// input: 1) pT histogram of daughter particles //
7// 2) boolean flag:kFALSE -> read Kinematics.root to evaluate //
8// correction factors, create a TNtuple //
9// with kinematic informations of mothers //
10// and daughters and store it in the file //
11// "DecayKine.root" //
12// kTRUE -> read the TNtupla from the file //
13// "DecayKine.root" (after it is created) //
14// to evaluate correction factors //
15// 3) name of file with the list of "galice.root" files to read //
16// kinematics (not needed after the TNtupla is created) //
17// //
18// output: 1) file Mothers.root which contains pt-spectra and ptMin //
19// spectra of mothers particles //
20// 2) TNtupla with kinematic informations (optional) //
21// //
22// Origin: Giuseppe.Bruno@ba.infn.it, Fiorella.Fionda@ba.infn.it //
23// //
24/////////////////////////////////////////////////////////////////////////////
25
26 char *ntuplaFileName = "DecayKine.root"; // default name of the Ntupla
27 char *mode = "local"; // analysis mode (select local or proof)
28 char *dataset = "/COMMON/COMMON/LHC09a14_0.9TeV_0.5T"; // define dataset for proof
29
30 if(mode == "proof") loadLib();
31 else{
32 gSystem->Load("libANALYSIS.so");
33 gSystem->Load("libANALYSISalice.so");
34 gSystem->Load("libPWG3base.so");
35 }
36 // Set AliPtMothFromPtDaugh object
37 AliPtMothFromPtDaugh *ptExtr = new AliPtMothFromPtDaugh();
38 ptExtr->SetDefaultAnalysis(AliPtMothFromPtDaugh::kBtoJPSI);
39 ptExtr->SetBinsPtMoth(0.,10,20,1);
40 ptExtr->SetBinsPtMinMoth(0.,10,20,1);
41 ptExtr->SetEtaMothers(-1.5,1.5);
42 ptExtr->SetEtaDaughter(-1.,1.);
43 if(!ptExtr->ReadHistoPtDaught(histPtDaug))
44 { printf("Daughter pt-Histogram is not defined \n"); return; }
45 if(!ptExtr->CreateWeights()) return;
46 //
47 // create Analysis manager with MC and Input handlers
48 //
49 AliAnalysisManager *mgr = new AliAnalysisManager("mgr", "Analysis Manager");
50 AliMCEventHandler* mcHandler = new AliMCEventHandler();
51 mgr->SetMCtruthEventHandler(mcHandler);
52 AliInputEventHandler *inputHandler =0x0;
53 mgr->SetInputEventHandler(inputHandler);
54
55 TChain *chain=0x0;
56 if(mode=="local"){
57 if(!readKineFromNtupla) chain = CreateChain(galiceList); // create a chain with galice.root files
58 else mgr->SetExternalLoop(kTRUE); // to abort event loop when Ntupla is already created
59 }
60 //
61 // create task and add it to the manager
62 //
63 AliAnalysisTaskPtMothFromPtDaugh *task = new AliAnalysisTaskPtMothFromPtDaugh(readKineFromNtupla);
64 task->SetPtMothFromPtDaugh(ptExtr); // set AliPtMothFromPtDaugh object to the task
65 task->SetNtuplaFileName(ntuplaFileName);
66 mgr->AddTask(task);
67 //
68 // create input / output containers
69 //
70 AliAnalysisDataContainer *cOutput = mgr->CreateContainer("Mothers", TList::Class(), AliAnalysisManager::kOutputContainer,"Mothers.root");
71 mgr->ConnectOutput(task, 1, cOutput);
72 // optional output for TNtupla
73 AliAnalysisDataContainer *cOutput1 = 0x0;
74 if(!readKineFromNtupla){
75 cOutput1 = mgr->CreateContainer("DecayKine", TNtuple::Class(), AliAnalysisManager::kOutputContainer,ntuplaFileName);
76 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
77 mgr->ConnectOutput(task,2,cOutput1);
78 }
79 //
80 // run analysis locally
81 //
82 Int_t result=mgr->InitAnalysis();
83 if (!result){
84 Error("RunAnalysis","Could not initialise Analysis.");
85 return 0;
86 }
87 mgr->PrintStatus();
88 if(mode=="local") mgr->StartAnalysis(mode,chain);
89 else if(mode=="proof") mgr->StartAnalysis(mode,dataset);
90 if(readKineFromNtupla) mgr->Terminate();
91 return;
92 }
93
94TChain *CreateChain(const char* galiceName)
95 {
96 //
97 // Create a chain from a list of galice.root
98 //
99 ifstream in;
100 in.open(galiceName);
101 if (!in.is_open()) return 0x0;
102 TChain *chain=new TChain("TE");
103 TString line;
104 while(in.good()) {
105 in >> line;
106 if (!line.IsNull()) chain->AddFile(line);
107 }
108 return chain;
109 }
110
111void loadLib(){
112printf("****** Connect to PROOF *******\n");
113gEnv->SetValue("XSec.GSI.DelegProxy","2");
114TProof::Open("alicecaf.cern.ch");
115gProof->UploadPackage("STEERBase.par");
116gProof->EnablePackage("STEERBase.par");
117gProof->UploadPackage("ESD.par");
118gProof->EnablePackage("ESD.par");
119gProof->UploadPackage("AOD.par");
120gProof->EnablePackage("AOD.par");
121gProof->UploadPackage("ANALYSIS.par");
122gProof->EnablePackage("ANALYSIS.par");
123gProof->UploadPackage("ANALYSISalice.par");
124gProof->EnablePackage("ANALYSISalice.par");
125gProof->UploadPackage("PWG3base.par");
126gProof->EnablePackage("PWG3base.par");
127}