]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/multiplicity/run.C
adding trigger as flag
[u/mrichter/AliRoot.git] / PWG0 / multiplicity / run.C
1 void run(Char_t* data, Long64_t nRuns = -1, Long64_t offset = 0, Bool_t aDebug = kFALSE, Int_t aProof = 0, Bool_t mc = kTRUE, const char* option = "")
2 {
3   // aProof option: 0 no proof
4   //                1 proof with chain
5   //                2 proof with dataset
6
7   if (nRuns < 0)
8     nRuns = 1234567890;
9
10   if (aProof)
11   {
12     TProof::Open("lxb6046");
13
14     // Enable the needed package
15     if (1)
16     {
17       gProof->UploadPackage("$ALICE_ROOT/STEERBase");
18       gProof->EnablePackage("$ALICE_ROOT/STEERBase");
19       gProof->UploadPackage("$ALICE_ROOT/ESD");
20       gProof->EnablePackage("$ALICE_ROOT/ESD");
21       gProof->UploadPackage("$ALICE_ROOT/AOD");
22       gProof->EnablePackage("$ALICE_ROOT/AOD");
23       gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
24       gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
25       gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
26       gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
27     }
28     else
29     {
30       gProof->UploadPackage("$ALICE_ROOT/AF-v4-12");
31       gProof->EnablePackage("$ALICE_ROOT/AF-v4-12");
32     }
33
34     gProof->UploadPackage("$ALICE_ROOT/PWG0base");
35     gProof->EnablePackage("$ALICE_ROOT/PWG0base");
36   }
37   else
38   {
39     gSystem->Load("libVMC");
40     gSystem->Load("libTree");
41     gSystem->Load("libSTEERBase");
42     gSystem->Load("libESD");
43     gSystem->Load("libAOD");
44     gSystem->Load("libANALYSIS");
45     gSystem->Load("libANALYSISalice");
46     gSystem->Load("libPWG0base");
47   }
48
49   // Create the analysis manager
50   mgr = new AliAnalysisManager;
51
52   AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kTPC;
53   AliPWG0Helper::Trigger      trigger      = AliPWG0Helper::kMB1;
54
55   AliPWG0Helper::PrintConf(analysisMode, trigger);
56
57   TString taskName("AliMultiplicityTask.cxx+");
58   if (aDebug)
59     taskName += "+g";
60
61   // Create, add task
62   if (aProof > 0) {
63     gProof->Load(taskName);
64   } else
65     gROOT->Macro(taskName);
66
67   task = new AliMultiplicityTask(option);
68
69   if (analysisMode != AliPWG0Helper::kSPD)
70   {
71     // selection of esd tracks
72     gROOT->ProcessLine(".L ../CreateStandardCuts.C");
73     AliESDtrackCuts* esdTrackCuts = CreateTrackCuts(analysisMode);
74     if (!esdTrackCuts)
75     {
76       printf("ERROR: esdTrackCuts could not be created\n");
77       return;
78     }
79
80     task->SetTrackCuts(esdTrackCuts);
81   }
82
83   task->SetAnalysisMode(analysisMode);
84   task->SetTrigger(trigger);
85
86   if (mc)
87     task->SetReadMC();
88
89   //task->SetUseMCVertex();
90
91   mgr->AddTask(task);
92
93   if (mc) {
94     // Enable MC event handler
95     AliMCEventHandler* handler = new AliMCEventHandler;
96     handler->SetReadTR(kFALSE);
97     mgr->SetMCtruthEventHandler(handler);
98   }
99
100   // pt study
101   TString optionStr(option);
102   if (optionStr.Contains("pt-spectrum-func"))
103   {
104     //TF1* func = new TF1("func", "0.7 + x", 0, 0.3);
105     //TF1* func = new TF1("func", "1.3 - x", 0, 0.3);
106     //TF1* func = new TF1("func", "1", 0, 0.3);
107     //new TCanvas; func->Draw();
108     //inputList.Add(func->GetHistogram()->Clone("pt-spectrum"));
109
110     TFile* file = TFile::Open("ptspectrum_fit.root");
111     if (!file)
112     {
113       Printf("Could not open ptspectrum_fit.root");
114       return;
115     }
116
117     TString subStr(optionStr(optionStr.Index("pt-spectrum-func")+17, 3));
118     TString histName(Form("ptspectrum_%s", subStr.Data()));
119     Printf("Pt-Spectrum modification. Using %s.", histName.Data());
120     TH1* hist = (TH1*) file->Get(histName);
121     if (!hist)
122     {
123       Printf("Could not read histogram.");
124       return;
125     }
126
127     new TCanvas; hist->Draw();
128     task->SetPtSpectrum((TH1*) hist->Clone("pt-spectrum"));
129   }
130
131   // Add ESD handler
132   AliESDInputHandler* esdH = new AliESDInputHandler;
133   mgr->SetInputEventHandler(esdH);
134
135   // Attach input
136   cInput  = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
137   mgr->ConnectInput(task, 0, cInput);
138
139   // Attach output
140   cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
141   //cOutput->SetDataOwned(kTRUE);
142   mgr->ConnectOutput(task, 0, cOutput);
143
144   // Enable debug printouts
145   if (aDebug)
146     mgr->SetDebugLevel(2);
147
148   // Run analysis
149   mgr->InitAnalysis();
150   mgr->PrintStatus();
151
152   if (aProof == 2)
153   {
154     // process dataset
155
156     mgr->StartAnalysis("proof", data, nRuns, offset);
157   }
158   else
159   {
160     // Create chain of input files
161     gROOT->LoadMacro("../CreateESDChain.C");
162     chain = CreateESDChain(data, nRuns, offset);
163
164     mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);
165   }
166 }