1 //--------------------------------------------------------------------------
2 // Base macro for submitting trigger chamber efficiency determination.
4 // In case it is not run with full aliroot, it needs to have in the working directory:
11 // The macro reads ESDs and outputs file:
12 // - MUON.TriggerEfficiencyMap.root
14 // To display the trigger chamber efficiency:
16 // > AliMUONTriggerEfficiencyCells effCells("MUON.TriggerEfficiencyMap.root")
17 // > effCells.DisplayEfficiency()
18 //--------------------------------------------------------------------------
20 enum anaModes {kMlocal, kMgridLocal, kMgrid};
21 TString modeName[3] = {"local", "local", "grid"};
22 const TString kDefaultLocalInputDir="$ALICE_ROOT/MUON/test_out.100";
23 const TString kDefaultXmlFile="wn.xml";
25 void AnalysisTrigChEff(Int_t mode=kMlocal)
27 // Example of running analysis train
31 gSystem->Load("libTree.so");
32 gSystem->Load("libGeom.so");
33 gSystem->Load("libVMC.so");
34 gSystem->Load("libPhysics.so");
37 SetupPar("STEERBase");
41 SetupPar("ANALYSISalice");
43 // Analysis using standard AliRoot libraries
44 gSystem->Load("libSTEERBase.so");
45 gSystem->Load("libESD.so");
46 gSystem->Load("libAOD.so");
47 gSystem->Load("libANALYSIS.so");
48 gSystem->Load("libANALYSISalice.so");
51 // A task can be compiled dynamically with AClic
52 gROOT->ProcessLine(".L AliAnalysisTaskTrigChEff.cxx+");
57 if(mode==kMgridLocal || mode==kMgrid)
58 TGrid::Connect("alien://");
63 TChain* chain = CreateChain(mode);
65 TString outFileName("MUON.TriggerEfficiencyMap.root");
68 // Make the analysis manager
69 AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");
71 AliESDInputHandler *esdHandler = new AliESDInputHandler();
72 //esdHandler->SetInactiveBranches("FMD CaloCluster");
73 // Monte Carlo handler
74 //AliMCEventHandler* mcHandler = new AliMCEventHandler();
76 mgr->SetInputEventHandler(esdHandler);
77 //mgr->SetMCtruthEventHandler(mcHandler);
79 // Trigger chamber efficiency analysis
80 AliAnalysisTaskTrigChEff* taskTrigChEff = new AliAnalysisTaskTrigChEff("TaskTrigChEff");
81 mgr->AddTask(taskTrigChEff);
83 // Create containers for input/output
84 // Top container for ESD input
85 AliAnalysisDataContainer *cin_esd = mgr->CreateContainer("cESD",TChain::Class(),
86 AliAnalysisManager::kInputContainer);
88 // Output histograms list for single muons analysis
89 AliAnalysisDataContainer *cout_trigChEff = mgr->CreateContainer("triggerChamberEff", TList::Class(),
90 AliAnalysisManager::kOutputContainer, outFileName.Data());
92 mgr->ConnectInput (taskTrigChEff, 0, cin_esd);
93 mgr->ConnectOutput (taskTrigChEff, 0, cout_trigChEff);
98 if (mgr->InitAnalysis()) {
100 mgr->StartAnalysis(modeName[mode].Data(), chain);
106 //______________________________________________________________________________
107 TChain* CreateChain(Int_t mode)
109 printf("*******************************\n");
110 printf("*** Getting the Chain ***\n");
111 printf("*******************************\n");
113 if(mode==kMgridLocal || mode==kMgrid){
114 AliTagAnalysis *analysis = new AliTagAnalysis();
115 chain = analysis->GetChainFromCollection(kDefaultXmlFile.Data(),"esdTree");
118 chain = new TChain("esdTree");
119 TString inFileName("AliESDs.root");
120 inFileName.Prepend(Form("%s/",kDefaultLocalInputDir.Data()));
121 chain->Add(inFileName.Data());
123 if (chain) chain->ls();
127 //______________________________________________________________________________
128 void SetupPar(char* pararchivename)
130 if (pararchivename) {
131 char processline[1024];
132 sprintf(processline,".! tar xvzf %s.par",pararchivename);
133 gROOT->ProcessLine(processline);
134 const char* ocwd = gSystem->WorkingDirectory();
135 gSystem->ChangeDirectory(pararchivename);
136 printf("Current directory = %s\n",gSystem->pwd());
138 // check for BUILD.sh and execute
139 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
140 printf("*******************************\n");
141 printf("*** Building PAR archive ***\n");
142 printf("*******************************\n");
144 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
145 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
149 // check for SETUP.C and execute
150 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
151 printf("*******************************\n");
152 printf("*** Setup PAR archive ***\n");
153 printf("*******************************\n");
154 gROOT->Macro("PROOF-INF/SETUP.C");
157 gSystem->ChangeDirectory("../");