1 void run(Char_t* data, Long64_t nRuns = -1, Long64_t offset = 0, Bool_t aDebug = kFALSE, Int_t aProof = 0, Int_t requiredData = 1, const char* option = "")
3 // aProof option: 0 no proof
5 // 2 proof with dataset
7 // requiredData option: 0 = only ESD
9 // 2 = RAW (ESD+check on event type)
17 gEnv->SetValue("XSec.GSI.DelegProxy", "2");
18 TProof::Open("alicecaf");
20 // Enable the needed package
23 gProof->UploadPackage("$ALICE_ROOT/STEERBase");
24 gProof->EnablePackage("$ALICE_ROOT/STEERBase");
25 gProof->UploadPackage("$ALICE_ROOT/ESD");
26 gProof->EnablePackage("$ALICE_ROOT/ESD");
27 gProof->UploadPackage("$ALICE_ROOT/AOD");
28 gProof->EnablePackage("$ALICE_ROOT/AOD");
29 gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
30 gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
31 gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
32 gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
36 gProof->UploadPackage("$ALICE_ROOT/AF-v4-16");
37 gProof->EnablePackage("$ALICE_ROOT/AF-v4-16");
40 gProof->UploadPackage("$ALICE_ROOT/PWG0base");
41 gProof->EnablePackage("$ALICE_ROOT/PWG0base");
45 gSystem->Load("libVMC");
46 gSystem->Load("libTree");
47 gSystem->Load("libSTEERBase");
48 gSystem->Load("libESD");
49 gSystem->Load("libAOD");
50 gSystem->Load("libANALYSIS");
51 gSystem->Load("libANALYSISalice");
52 gSystem->Load("libPWG0base");
55 // Create the analysis manager
56 mgr = new AliAnalysisManager;
59 AliESDInputHandler* esdH = new AliESDInputHandler;
60 esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks AliESDTZERO ALIESDACORDE MuonTracks TrdTracks");
61 mgr->SetInputEventHandler(esdH);
64 gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
65 physicsSelectionTask = AddTaskPhysicsSelection((requiredData == 2) ? kFALSE : kTRUE);
67 // FO efficiency (for MC)
68 if (1 && requiredData != 2)
70 //const char* fastORFile = "../dNdEta/spdFOEff_run104824_52.root";
71 //const char* fastORFile = "../dNdEta/spdFOEff_run104867_92.root";
72 //const char* fastORFile = "../dNdEta/spdFOEff_run105054_7.root";
73 const char* fastORFile = "../dNdEta/spdFOEff_run114931.root";
75 Printf("NOTE: Simulating FAST-OR efficiency on the analysis level using file %s", fastORFile);
76 TFile::Open(fastORFile);
78 spdFOEff = (TH1F*) gFile->Get("spdFOEff");
79 physicsSelectionTask->GetPhysicsSelection()->Initialize(114931);
80 physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis()->SetSPDGFOEfficiency(spdFOEff);
83 AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn;
84 //AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kTPCITS | AliPWG0Helper::kFieldOn;
86 //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kAcceptAll | AliTriggerAnalysis::kOfflineFlag;
87 AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kAcceptAll | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
89 //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kMB1Prime | AliTriggerAnalysis::kOfflineFlag;
90 //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kSPDGFOBits | AliTriggerAnalysis::kOfflineFlag;
91 //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0AND | AliTriggerAnalysis::kOfflineFlag;
93 AliPWG0Helper::DiffTreatment diffTreatment = AliPWG0Helper::kMCFlags;
94 //AliPWG0Helper::DiffTreatment diffTreatment = AliPWG0Helper::kE710Cuts;
96 AliPWG0Helper::PrintConf(analysisMode, trigger, diffTreatment);
98 TString taskName("AliMultiplicityTask.cxx+");
104 gProof->Load(taskName);
106 gROOT->Macro(taskName);
116 Printf("NOTE: Systematic study for VZERO enabled!");
117 //physicsSelectionTask->GetPhysicsSelection()->Initialize(104867);
118 for (Int_t i=0; i<1; i++)
121 physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0HwPars(15, 61.5, 86.5);
122 physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0AdcThr(15);
124 //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0HwPars(0, 0, 125);
125 //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0AdcThr(0);
129 TString optionStr(option);
131 // remove SAVE option if set
132 Bool_t save = kFALSE;
133 TString optionStr(option);
134 if (optionStr.Contains("SAVE"))
136 optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
140 task = new AliMultiplicityTask(optionStr);
142 if (!(analysisMode & AliPWG0Helper::kSPD))
144 // selection of esd tracks
145 gROOT->ProcessLine(".L ../CreateStandardCuts.C");
146 AliESDtrackCuts* esdTrackCuts = CreateTrackCuts(analysisMode);
149 printf("ERROR: esdTrackCuts could not be created\n");
153 task->SetTrackCuts(esdTrackCuts);
156 // task->SetDeltaPhiCut(0.05);
158 task->SetAnalysisMode(analysisMode);
159 task->SetTrigger(trigger);
160 task->SetDiffTreatment(diffTreatment);
162 if (requiredData == 1)
165 //task->SetUseMCVertex();
167 if (requiredData != 2)
168 task->SetSkipParticles();
172 if (requiredData == 1) {
173 // Enable MC event handler
174 AliMCEventHandler* handler = new AliMCEventHandler;
175 if (!optionStr.Contains("particle-efficiency"))
176 handler->SetReadTR(kFALSE);
177 mgr->SetMCtruthEventHandler(handler);
181 if (optionStr.Contains("pt-spectrum-func"))
183 TF1* func = new TF1("func", "1", 0, 0.2);
184 //TF1* func = new TF1("func", "1.5 - x / 0.2 * 0.5", 0, 0.2);
185 //TF1* func = new TF1("func", "1.25 - x / 0.2 * 0.25", 0, 0.2);
186 //TF1* func = new TF1("func", "0.75 + x / 0.2 * 0.25", 0, 0.2);
187 hist = func->GetHistogram();
188 //new TCanvas; func->Draw();
189 //inputList.Add(func->GetHistogram()->Clone("pt-spectrum"));
191 new TCanvas; hist->Draw();
192 task->SetPtSpectrum((TH1D*) hist->Clone("pt-spectrum"));
196 cInput = mgr->GetCommonInputContainer();
197 mgr->ConnectInput(task, 0, cInput);
200 cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
201 mgr->ConnectOutput(task, 0, cOutput);
203 // Enable debug printouts
205 mgr->SetDebugLevel(2);
215 mgr->StartAnalysis("proof", data, nRuns, offset);
219 TString path("maps/");
220 path += TString(data).Tokenize("/")->Last()->GetName();
222 UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) AliTriggerAnalysis::kStartOfFlags;
223 switch (triggerNoFlags)
225 case AliTriggerAnalysis::kAcceptAll: path += "/all"; break;
226 case AliTriggerAnalysis::kMB1: path += "/mb1"; break;
227 case AliTriggerAnalysis::kMB2: path += "/mb2"; break;
228 case AliTriggerAnalysis::kMB3: path += "/mb3"; break;
229 case AliTriggerAnalysis::kSPDGFO: path += "/spdgfo"; break;
230 case AliTriggerAnalysis::kSPDGFOBits: path += "/spdgfobits"; break;
231 case AliTriggerAnalysis::kV0AND: path += "/v0and"; break;
232 case AliTriggerAnalysis::kNSD1: path += "/nsd1"; break;
233 case AliTriggerAnalysis::kMB1Prime: path += "/mb1prime"; break;
234 default: Printf("ERROR: Trigger undefined for path to files"); return;
237 if (trigger & AliTriggerAnalysis::kOneParticle)
240 if (analysisMode & AliPWG0Helper::kSPD)
243 if (analysisMode & AliPWG0Helper::kTPC)
246 if (analysisMode & AliPWG0Helper::kTPCITS)
249 gSystem->mkdir(path, kTRUE);
251 TString fileName("multiplicity");
252 if (optionStr.Contains("only-process-type-nd"))
254 if (optionStr.Contains("only-process-type-sd"))
256 if (optionStr.Contains("only-process-type-dd"))
260 gSystem->Rename(fileName, path + "/" + fileName);
261 gSystem->Rename("event_stat.root", path + "/event_stat.root");
263 Printf(">>>>> Moved files to %s", path.Data());
266 else if (aProof == 3)
268 gROOT->ProcessLine(".L CreateChainFromDataSet.C");
269 ds = gProof->GetDataSet(data)->GetStagedSubset();
270 chain = CreateChainFromDataSet(ds, "esdTree", nRuns);
271 mgr->StartAnalysis("local", chain, nRuns, offset);
275 // Create chain of input files
276 gROOT->LoadMacro("../CreateESDChain.C");
277 chain = CreateESDChain(data, nRuns, offset);
279 mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);