1 void runProofSPDdNdEta_CorrRef4(
2 TString proofCluster = "mnicassi@alice-caf.cern.ch", //skaf.saske.sk",
3 TString alirootVer = "VO_ALICE@AliRoot::v4-21-04-AN",
4 TString rootVer = "VO_ALICE@ROOT::v5-27-06a-1",
5 // TString dataset = "/alice/data/LHC10h_000137161_p1_plusplusplus",
6 TString dataset = "/alice/sim/LHC10h8_000137161",
7 TString outFileCorr = "SPDdNdEtaCorr.root",
8 // TString outFileCorr = "SPDdNdEtaCorrRot.root",
9 TString outFileData = "SPDdNdEtaData.root",
10 TString percentFile = "./AliCentralityBy1D_LHC10g2a_100.root",
11 TString percentFile2 = "./AliCentralityByFunction_LHC10g2a_100.root",
13 Bool_t readtr = kFALSE,
14 Bool_t recotracklets = kTRUE,
15 Bool_t dataonalien = kFALSE,
16 Float_t centrlowlim = 0.,
17 Float_t centruplim = 5.,
18 Bool_t centrest = kFALSE,
19 Int_t minClMultLay2 = 4300,
20 // Int_t minClMultLay2 = -1,
21 Int_t maxClMultLay2 = 1.0*1e5,
22 Int_t minV0Mult = 14674.5,
24 Bool_t partsp = kTRUE,
25 Float_t phiWindow = 0.8,
26 Float_t thetaWindow = 0.025,
27 Float_t phiShift = 0.0045,
28 Float_t removeClFOvl = kFALSE,
29 Float_t phiOvlCut = 0.005,
30 Float_t zetaOvlCut = 0.05,
31 Float_t phiRotAngle = 0.,
32 // Float_t phiRotAngle = TMath::Pi(),
33 Float_t phiWindowAna = 0.08,
34 Int_t nEvents = 1.0*1e7,
35 Int_t nEventsSkip = 0) { //1.0*1e7
37 gEnv->SetValue("XSec.GSI.DelegProxy","2");
39 TString alirootMode = ""; // STEERBase,ESD,AOD,ANALYSIS,ANALYSISalice (default aliroot mode)
41 TList *list = new TList();
43 alirootMode="REC"; // $ALICE_ROOT/macros/loadlibsrec.C
44 extraLibs= "ITSrec:CDB:Geom:"; // not needed in default aliroot mode
45 } else alirootMode="ALIROOT";
46 extraLibs+= "ANALYSIS:ANALYSISalice";
48 // sets $ALIROOT_MODE on each worker to let proof to know to run in special mode
49 list->Add(new TNamed("ALIROOT_MODE", alirootMode.Data()));
50 list->Add(new TNamed("ALIROOT_EXTRA_LIBS", extraLibs.Data()));
51 if (recotracklets||dataonalien) list->Add(new TNamed("ALIROOT_ENABLE_ALIEN", "1"));
53 // REM: same version of AliRoot on client!
54 // TProof::Mgr(proofCluster.Data())->SetROOTVersion(rootVer.Data()); //If not using the default version
55 TProof::Open(proofCluster.Data());
56 // enable n workers per machine
57 // TProof::Open(proofCluster.Data(),"workers=nx")
58 // enable less workers
59 // TProof::Open(proofCluster.Data(),"workers=20"); //For performance reasons, try to avoid it.
61 Error("runSPDdNdEtaAna.C","Connection to AF failed.");
64 gProof->EnablePackage(alirootVer.Data(), list);
66 // gROOT->LoadMacro("AnalysisMacroa.C");
67 Analysis(dataset.Data(), outFileCorr, outFileData, percentFile, percentFile2,
68 useMC, readtr, recotracklets,
69 nEvents, nEventsSkip, centrlowlim, centruplim, centrest, minClMultLay2, maxClMultLay2, minV0Mult, vtxlim, partsp,
70 phiWindow, thetaWindow, phiShift, removeClFOvl, phiOvlCut, zetaOvlCut, phiRotAngle,phiWindowAna);
74 //________________________________________________________________________
75 void Analysis(TString dataset, TString outFileCorr, TString outFileData, TString percentFile, TString percentFile2,
76 Bool_t useMC, Bool_t readtr, Bool_t recotracklets,
77 Int_t nEvents, Int_t nEventsSkip,
78 Float_t centrlowlim, Float_t centruplim, Bool_t centrest, Int_t minClMultLay2, Int_t maxClMultLay2, Int_t minV0Mult, Float_t vtxlim, Bool_t partsp,
79 Float_t phiWindow, Float_t thetaWindow, Float_t phiShift, Bool_t removeClFOvl,
80 Float_t phiOvlCut, Float_t zetaOvlCut, Float_t phiRotAngle, Float_t phiWindowAna) {
82 TString format = GetFormatFromDataSet(dataset);
85 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
86 if (!mgr) mgr = new AliAnalysisManager("Test train");
88 InputHandlerSetup(format,useMC,recotracklets);
90 // compile the tracklet reconstruction class
91 gProof->Load("AliTrackletAlg.cxx++");
92 // compile analysis task
93 gProof->Load("AliAnalysisTaskSPDdNdEta.cxx++");
96 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
97 if (!mgr) mgr = new AliAnalysisManager("SPD analysis");
100 AliAnalysisTaskSPDdNdEta *task = new AliAnalysisTaskSPDdNdEta("AliAnalysisTaskSPDdNdEta");
102 AliTriggerAnalysis::Trigger trigg = AliTriggerAnalysis::kAcceptAll; // to be changed every time
103 AliAnalysisTaskSPDdNdEta::MCCentralityBin kmccentrbin = AliAnalysisTaskSPDdNdEta::kall; // idem
105 task->SetReadMC(useMC);
106 task->SetTrigger(trigg);
107 task->SetReadTrackRefs(readtr);
108 task->SetRecoTracklets(recotracklets);
109 task->SetMCCentralityBin(kmccentrbin);
110 task->SetCentralityLowLim(centrlowlim);
111 task->SetCentralityUpLim(centruplim);
112 task->SetCentralityEst(centrest);
113 task->SetMinClusterMultLay2(minClMultLay2);
114 task->SetMaxClusterMultLay2(maxClMultLay2);
115 task->SetMinV0Mult(minV0Mult);
116 task->SetVertexRange(vtxlim);
117 task->SetPartSpecies(partsp);
119 task->SetPhiWindow(phiWindow);
120 task->SetThetaWindow(thetaWindow);
121 task->SetPhiShift(phiShift);
122 task->SetRemoveClustersFromOverlaps(removeClFOvl);
123 task->SetPhiOverlapCut(phiOvlCut);
124 task->SetZetaOverlapCut(zetaOvlCut);
125 task->SetPhiRotationAngle(phiRotAngle);
126 task->SetPhiWindowAna(phiWindowAna);
129 gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
130 AliPhysicsSelectionTask* physSelTask=AddTaskPhysicsSelection(useMC,kFALSE);
132 AliPhysicsSelection * physSel = physSelTask->GetPhysicsSelection();
134 /* if (dataset=="/alice/data/LHC10h_000137045_p1_plus") {
135 physSel->AddCollisionTriggerClass("+CMBS1A-B-NOPF-ALL");
136 physSel->AddCollisionTriggerClass("+CMBS1C-B-NOPF-ALL");
137 physSel->AddCollisionTriggerClass("+CMBAC-B-NOPF-ALL");
140 physSel->AddCollisionTriggerClass("+CMBS2A-B-NOPF-ALL");
141 physSel->AddCollisionTriggerClass("+CMBS2C-B-NOPF-ALL");
142 physSel->AddCollisionTriggerClass("+CMBAC-B-NOPF-ALL");
145 task->SelectCollisionCandidates(AliVEvent::kUserDefined);
148 task->SelectCollisionCandidates(AliVEvent::kMB);
151 // centrality selection
152 gProof->Load("./AliCentralitySelectionTask.cxx++g");
153 AliCentralitySelectionTask *taskCentr = new AliCentralitySelectionTask("CentralitySelection");
154 taskCentr->SetPercentileFile(percentFile);
155 taskCentr->SetPercentileFile2(percentFile2);
157 mgr->AddTask(taskCentr);
158 mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
160 // create output container
161 if (useMC) AliAnalysisDataContainer *output = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer, outFileCorr);
162 else AliAnalysisDataContainer *output = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer, outFileData);
164 // add task to the manager
167 // connect input and output
168 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
169 mgr->ConnectOutput(task, 1, output);
174 mgr->StartAnalysis("proof", dataset.Data(), nEvents, nEventsSkip);
178 //________________________________________________________________________
179 TString GetFormatFromDataSet(TString dataset) {
181 // Info("runAAF.C","Detecting format from dataset (may take while, depends on network connection)...");
183 if (dataset.Contains("#")) {
184 Info("runSPDdNdEta.C",Form("Detecting format from dataset name '%s' ...",dataset.Data()));
185 dsTreeName=dataset(dataset.Last('#'),dataset.Length());
187 Info("runSPDdNdEta.C",Form("Detecting format from dataset '%s' (may take while, depends on network connection) ...",dataset.Data()));
188 TFileCollection *ds = gProof->GetDataSet(dataset.Data());
190 Error(Form("Dataset %s doesn't exist on proof cluster!!!!",dataset.Data()));
193 dsTreeName = ds->GetDefaultTreeName();
196 if (dsTreeName.Contains("esdTree")) {
197 Info("runSPDdNdEta.C","ESD input format detected ...");
199 } else if (dsTreeName.Contains("aodTree")) {
200 Info("runSPDdNdEta.C","AOD input format detected ...");
203 Error("runSPDdNdEta.C",Form("Tree %s is not supported !!!",dsTreeName.Data()));
204 Error("runSPDdNdEta.C",Form("Maybe set your DS to %s#esdTree or %s#aodTree",dataset.Data(),dataset.Data()));
210 //________________________________________________________________________
211 Bool_t InputHandlerSetup(TString format = "esd", Bool_t useKine = kTRUE, Bool_t recotracklets)
215 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
217 AliAnalysisDataContainer *cin = mgr->GetCommonInputContainer();
221 if (!format.CompareTo("esd"))
223 AliESDInputHandler *esdInputHandler = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
225 if (!esdInputHandler)
227 Info("CustomAnalysisTaskInputSetup", "Creating esdInputHandler ...");
228 if(recotracklets) esdInputHandler = new AliESDInputHandlerRP();
229 else esdInputHandler = new AliESDInputHandler();
230 mgr->SetInputEventHandler(esdInputHandler);
235 AliMCEventHandler* mcInputHandler = dynamic_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
239 Info("CustomAnalysisTaskInputSetup", "Creating mcInputHandler ...");
240 AliMCEventHandler* mcInputHandler = new AliMCEventHandler();
241 mgr->SetMCtruthEventHandler(mcInputHandler);
246 else if (!format.CompareTo("aod"))
248 AliAODInputHandler *aodInputHandler = dynamic_cast<AliAODInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
250 if (!aodInputHandler)
252 Info("CustomAnalysisTaskInputSetup", "Creating aodInputHandler ...");
253 aodInputHandler = new AliAODInputHandler();
254 mgr->SetInputEventHandler(aodInputHandler);
259 AliWarning("Wrong input format!!! Only ESD and AOD are supported. Skipping Task ...");
266 //________________________________________________________________________
269 /alice/data/LHC10h_000137045_p1 | 60 | /esdTree | 5.144e+05| 12 GB | 100 %
270 /alice/data/LHC10h_000137045_p1_lowflux | 50 | /esdTree | 4.144e+05| 10 GB | 100 %
271 /alice/data/LHC10h_000137045_p1_plus | 53 | /esdTree | 4.444e+05| 10 GB | 100 %
272 /alice/data/LHC10h_000137124_p1 | 89 | /esdTree | 7.152e+04| 3 GB | 100 %
273 /alice/data/LHC10h_000137125_p1 | 41 | /esdTree | 1.537e+04| 1 GB | 100 %
274 /alice/data/LHC10h_000137132_p1 | 87 | /esdTree | 8.881e+04| 8 GB | 100 %
275 /alice/data/LHC10h_000137133_p1 | 306 | /esdTree | 3.521e+05| 29 GB | 100 %
276 /alice/data/LHC10h_000137161 | 3348 | /esdTree | 6.279e+05| 407 GB | 97 %
278 /alice/sim/LHC10h1_000137045 | 1198 | /esdTree | 1.198e+04| 138 GB | 100 %
279 /alice/sim/LHC10h1a_000137045 | 1022 | /esdTree | 1.006e+04| 124 GB | 98 %
282 //________________________________________________________________________