1 void runProofSPDdNdEta (TString proofCluster="mnicassi@alice-caf.cern.ch",//skaf.saske.sk",
2 TString alirootVer="VO_ALICE@AliRoot::v4-21-02-AN", TString rootVer="VO_ALICE@ROOT::v5-27-06a-1",
3 TString dataset="/PWG4/morsch/MC_LHC10f10a",///alice/sim/LHC10g2d_130844",///PWG4/morsch/MC_LHC10f10a",///PWG2/mnicassi/LHC10g1a_130844",//"/alice/sim/LHC10f8a_130844",
4 Bool_t useMC=kTRUE, Bool_t kpbpb=kTRUE, Bool_t readtr=kFALSE, Bool_t recotracklets = kFALSE, Bool_t dataonalien = kFALSE,
5 Float_t centrlowlim=0., Float_t centruplim=5., TString centrest="",
6 Int_t nEvents=1.0*1e7, Int_t nEventsSkip=0) { //1.0*1e7
9 gEnv->SetValue("XSec.GSI.DelegProxy","2");
11 TString alirootMode=""; // STEERBase,ESD,AOD,ANALYSIS,ANALYSISalice (default aliroot mode)
13 TList *list = new TList();
15 alirootMode="REC"; // $ALICE_ROOT/macros/loadlibsrec.C
16 extraLibs= "ITSrec:CDB:Geom:"; // not needed in default aliroot mode
18 alirootMode="ALIROOT";
20 extraLibs+= "ANALYSIS:ANALYSISalice";
21 // sets $ALIROOT_MODE on each worker to let proof to know to run in special mode
22 list->Add(new TNamed("ALIROOT_MODE", alirootMode.Data()));
23 list->Add(new TNamed("ALIROOT_EXTRA_LIBS", extraLibs.Data()));
24 if (recotracklets||dataonalien) list->Add(new TNamed("ALIROOT_ENABLE_ALIEN", "1"));
26 //REM: same version of AliRoot on client!
27 TProof::Mgr(proofCluster.Data())->SetROOTVersion(rootVer.Data()); //If not using the default version
28 // TProof::Open(proofCluster.Data());
29 // enable n workers per machine
30 // TProof::Open(proofCluster.Data(),"workers=nx")
31 // enable less workers
32 TProof::Open(proofCluster.Data(),"workers=20"); //For performance reasons, try to avoid it.
34 Error("runSPDdNdEtaAna.C","Connection to AF failed.");
37 gProof->EnablePackage(alirootVer.Data(), list);
39 Analysis(dataset.Data(), useMC, kpbpb, readtr, recotracklets, nEvents, nEventsSkip, centrlowlim, centruplim, centrest);
43 void Analysis(TString dataset, Bool_t useMC, Bool_t kpbpb, Bool_t readtr, Bool_t recotracklets, Int_t nEvents, Int_t nEventsSkip, Float_t centrlowlim, Float_t centruplim, TString centrest) {
45 TString format = GetFormatFromDataSet(dataset);
48 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
49 if (!mgr) mgr = new AliAnalysisManager("Test train");
51 InputHandlerSetup(format,useMC,recotracklets);
53 // compile the tracklet reconstruction class
54 gProof->Load("AliTrackletAlg.cxx++");
55 // compile analysis task
56 gProof->Load("AliAnalysisTaskSPDdNdEta.cxx++");
59 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
60 if (!mgr) mgr = new AliAnalysisManager("SPD analysis");
63 AliAnalysisTaskSPDdNdEta *task = new AliAnalysisTaskSPDdNdEta("AliAnalysisTaskSPDdNdEta");
65 AliTriggerAnalysis::Trigger trigg = AliTriggerAnalysis::kAcceptAll; // to be changed every time
66 AliAnalysisTaskSPDdNdEta::MCCentralityBin kmccentrbin = AliAnalysisTaskSPDdNdEta::kall; // idem
68 task->SetReadMC(useMC);
69 task->SetTrigger(trigg);
70 task->SetReadPbPb(kpbpb);
71 task->SetReadTrackRefs(readtr);
72 task->SetRecoTracklets(recotracklets);
73 task->SetMCCentralityBin(kmccentrbin);
74 task->SetCentralityLowLim(centrlowlim);
75 task->SetCentralityUpLim(centruplim);
76 task->SetCentralityEst(centrest);
79 // gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
80 // physicsSelectionTask = AddTaskPhysicsSelection(useMC);
82 // centrality selection
83 gProof->Load("$ALICE_ROOT/ANALYSIS/AliCentralitySelectionTask.cxx++g");
84 AliCentralitySelectionTask *taskCentr = new AliCentralitySelectionTask("CentralitySelection");
85 taskCentr->SetPercentileFile("$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityBy1D.root");
86 taskCentr->SetPercentileFile2("./test_AliCentralityByFunction.root");
87 mgr->AddTask(taskCentr);
88 mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
91 // create output container
92 if (useMC) AliAnalysisDataContainer *output = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer, "SPDdNdEtaCorr.root");
93 else AliAnalysisDataContainer *output = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer, "SPDdNdEtaData.root");
95 // add task to the manager
98 // connect input and output
99 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
100 mgr->ConnectOutput(task, 1, output);
105 mgr->StartAnalysis("proof", dataset.Data(), nEvents, nEventsSkip);
110 TString GetFormatFromDataSet(TString dataset) {
112 // Info("runAAF.C","Detecting format from dataset (may take while, depends on network connection)...");
114 if (dataset.Contains("#")) {
115 Info("runSPDdNdEta.C",Form("Detecting format from dataset name '%s' ...",dataset.Data()));
116 dsTreeName=dataset(dataset.Last('#'),dataset.Length());
118 Info("runSPDdNdEta.C",Form("Detecting format from dataset '%s' (may take while, depends on network connection) ...",dataset.Data()));
119 TFileCollection *ds = gProof->GetDataSet(dataset.Data());
121 Error(Form("Dataset %s doesn't exist on proof cluster!!!!",dataset.Data()));
124 dsTreeName = ds->GetDefaultTreeName();
127 if (dsTreeName.Contains("esdTree")) {
128 Info("runSPDdNdEta.C","ESD input format detected ...");
130 } else if (dsTreeName.Contains("aodTree")) {
131 Info("runSPDdNdEta.C","AOD input format detected ...");
134 Error("runSPDdNdEta.C",Form("Tree %s is not supported !!!",dsTreeName.Data()));
135 Error("runSPDdNdEta.C",Form("Maybe set your DS to %s#esdTree or %s#aodTree",dataset.Data(),dataset.Data()));
141 Bool_t InputHandlerSetup(TString format = "esd", Bool_t useKine = kTRUE, Bool_t recotracklets)
145 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
147 AliAnalysisDataContainer *cin = mgr->GetCommonInputContainer();
151 if (!format.CompareTo("esd"))
153 AliESDInputHandler *esdInputHandler = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
155 if (!esdInputHandler)
157 Info("CustomAnalysisTaskInputSetup", "Creating esdInputHandler ...");
158 if(recotracklets) esdInputHandler = new AliESDInputHandlerRP();
159 else esdInputHandler = new AliESDInputHandler();
160 mgr->SetInputEventHandler(esdInputHandler);
165 AliMCEventHandler* mcInputHandler = dynamic_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
169 Info("CustomAnalysisTaskInputSetup", "Creating mcInputHandler ...");
170 AliMCEventHandler* mcInputHandler = new AliMCEventHandler();
171 mgr->SetMCtruthEventHandler(mcInputHandler);
176 else if (!format.CompareTo("aod"))
178 AliAODInputHandler *aodInputHandler = dynamic_cast<AliAODInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
180 if (!aodInputHandler)
182 Info("CustomAnalysisTaskInputSetup", "Creating aodInputHandler ...");
183 aodInputHandler = new AliAODInputHandler();
184 mgr->SetInputEventHandler(aodInputHandler);
189 AliWarning("Wrong input format!!! Only ESD and AOD are supported. Skipping Task ...");