AliPhysics  vAN-20150425 (2dcf1b0)
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
RunMuonQA.C
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 // Base macro for submitting muon QA analysis.
3 //
4 // It needs the following libraries:
5 // - libSTEERBase
6 // - libESD
7 // - libAOD
8 // - libANALYSIS
9 // - libANALYSISalice
10 // - libCORRFW
11 // - libPWGmuon
12 // - libPWGPPMUONlite
13 // The macro reads ESDs and store outputs in standard output file (AnalysisResults.root)
14 //
15 // Author: Philippe Pillot - SUBATECH Nantes
16 //--------------------------------------------------------------------------
17 
19 
20 void RunMuonQA(TString inputFileName = "AliESDs.root", Bool_t isMC = kFALSE,
21  Bool_t selectPhysics = kTRUE, Bool_t selectMatched = kTRUE,
22  Bool_t applyAccCut = kTRUE, Bool_t selectTrigger = kFALSE,
23  UInt_t triggerMask = AliVEvent::kMUS7, Short_t selectCharge = 0)
24 {
25  TStopwatch timer;
26  timer.Start();
27 
28  // Check runing mode
29  Int_t mode = GetMode(inputFileName);
30  if(mode < 0){
31  Error("RunMuonQA","Please provide either an ESD root file or a collection of ESDs.");
32  return;
33  }
34 
35  // Load common libraries
36  //gSystem->Load("libVMC");
37  //gSystem->Load("libTree");
38  //gSystem->Load("libPhysics");
39  //gSystem->Load("libMinuit");
40  //gSystem->Load("libXMLParser");
41  //gSystem->Load("libGui");
42  //gSystem->Load("libSTEERBase");
43  //gSystem->Load("libESD");
44  //gSystem->Load("libAOD");
45  //gSystem->Load("libANALYSIS");
46  //gSystem->Load("libANALYSISalice");
47  //gSystem->Load("libCORRFW");
48  //gSystem->Load("libPWGmuon");
49  //gSystem->Load("libPWGPPMUONlite");
50 
51  // Create input chain
52  TChain* chain = CreateChain(inputFileName);
53  if (!chain) return;
54 
55  // Create the analysis manager
56  AliAnalysisManager *mgr = new AliAnalysisManager("MuonQAAnalysis");
57 
58  // ESD input handler
59  AliESDInputHandler* esdH = new AliESDInputHandler();
60  esdH->SetReadFriends(kFALSE);
61  mgr->SetInputEventHandler(esdH);
62 
63  // event selection
64  gROOT->LoadMacro("$ALICE_PHYSICS/OADB/macros/AddTaskPhysicsSelection.C");
65  AliPhysicsSelectionTask* physicsSelection = AddTaskPhysicsSelection(isMC);
66  if(!physicsSelection) {
67  Error("RunMuonQA","AliPhysicsSelectionTask not created!");
68  return;
69  }
70 
71  // Muon QA analysis
72  gROOT->LoadMacro("$ALICE_PHYSICS/PWGPP/PilotTrain/AddTaskMuonQA.C");
73  AliAnalysisTaskMuonQA* muonQA = AddTaskMuonQA(selectPhysics, selectMatched, applyAccCut, selectTrigger, triggerMask, selectCharge);
74  if(!muonQA) {
75  Error("RunMuonQA","AliAnalysisTaskMuonQA not created!");
76  return;
77  }
78 
79  // Enable debug printouts
80  //mgr->SetDebugLevel(2);
81 
82  // start local analysis
83  if (mgr->InitAnalysis()) {
84  mgr->PrintStatus();
85  mgr->StartAnalysis("local", chain);
86  }
87 
88  timer.Stop();
89  timer.Print();
90 }
91 
92 //______________________________________________________________________________
93 Int_t GetMode(TString inputFileName)
94 {
95  if ( inputFileName.EndsWith(".xml") ) return kInteractif_xml;
96  else if ( inputFileName.EndsWith(".txt") ) return kInteractif_ESDList;
97  else if ( inputFileName.EndsWith(".root") ) return kLocal;
98  return -1;
99 }
100 
101 //______________________________________________________________________________
102 TChain* CreateChainFromCollection(const char *xmlfile)
103 {
104  // Create a chain from the collection of tags.
105  TAlienCollection* coll = TAlienCollection::Open(xmlfile);
106  if (!coll) {
107  ::Error("CreateChainFromTags", "Cannot create an AliEn collection from %s", xmlfile);
108  return NULL;
109  }
110 
111  TGridResult* tagResult = coll->GetGridResult("",kFALSE,kFALSE);
112  AliTagAnalysis *tagAna = new AliTagAnalysis("ESD");
113  tagAna->ChainGridTags(tagResult);
114 
115  AliRunTagCuts *runCuts = new AliRunTagCuts();
116  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
117  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
118  AliEventTagCuts *evCuts = new AliEventTagCuts();
119 
120  // Check if the cuts configuration file was provided
121  if (!gSystem->AccessPathName("ConfigureCuts.C")) {
122  gROOT->LoadMacro("ConfigureCuts.C");
123  ConfigureCuts(runCuts, lhcCuts, detCuts, evCuts);
124  }
125 
126  TChain *chain = tagAna->QueryTags(runCuts, lhcCuts, detCuts, evCuts);
127  if (!chain || !chain->GetNtrees()) return NULL;
128  chain->ls();
129  return chain;
130 }
131 
132 //______________________________________________________________________________
133 TChain* CreateChainFromFile(const char *rootfile)
134 {
135  // Create a chain using the root file.
136  TChain* chain = new TChain("esdTree");
137  chain->Add(rootfile);
138  if (!chain->GetNtrees()) return NULL;
139  chain->ls();
140  return chain;
141 }
142 
143 //______________________________________________________________________________
144 TChain* CreateChainFromESDList(const char *esdList)
145 {
146  // Create a chain using tags from the run list.
147  TChain* chain = new TChain("esdTree");
148  ifstream inFile(esdList);
149  TString inFileName;
150  if (inFile.is_open()) {
151  while (! inFile.eof() ) {
152  inFileName.ReadLine(inFile,kFALSE);
153  if(!inFileName.EndsWith(".root")) continue;
154  chain->Add(inFileName.Data());
155  }
156  }
157  inFile.close();
158  if (!chain->GetNtrees()) return NULL;
159  chain->ls();
160  return chain;
161 }
162 
163 //______________________________________________________________________________
164 TChain* CreateChain(TString inputFileName)
165 {
166  printf("*******************************\n");
167  printf("*** Getting the Chain ***\n");
168  printf("*******************************\n");
169  Int_t mode = GetMode(inputFileName);
170  if(mode == kInteractif_xml) return CreateChainFromCollection(inputFileName.Data());
171  else if (mode == kInteractif_ESDList) return CreateChainFromESDList(inputFileName.Data());
172  else if (mode == kLocal) return CreateChainFromFile(inputFileName.Data());
173  else return NULL;
174 }
175 
TChain * CreateChainFromFile(const char *rootfile)
Definition: RunMuonQA.C:133
Quality assurance of MUON ESDs.
void RunMuonQA(TString inputFileName="AliESDs.root", Bool_t isMC=kFALSE, Bool_t selectPhysics=kTRUE, Bool_t selectMatched=kTRUE, Bool_t applyAccCut=kTRUE, Bool_t selectTrigger=kFALSE, UInt_t triggerMask=AliVEvent::kMUS7, Short_t selectCharge=0)
Definition: RunMuonQA.C:20
TChain * CreateChainFromCollection(const char *xmlfile)
Definition: RunMuonQA.C:102
TChain * CreateChainFromESDList(const char *esdList)
Definition: RunMuonQA.C:144
TChain * CreateChain(TString inputFileName)
Definition: RunMuonQA.C:164
Int_t mode
Definition: anaM.C:40
Int_t GetMode(TString inputFileName)
Definition: RunMuonQA.C:93