]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HMPID/AliHMPIDAnalysisTask.C
Macro to find HMPID alignments based on AliAlignmentTrack Class.
[u/mrichter/AliRoot.git] / HMPID / AliHMPIDAnalysisTask.C
1 void AliHMPIDAnalysisTask()
2 {
3   
4   
5   //
6   // Macro to run the AliHMPIDAnalysisTask
7   //
8   //______ Input settings
9   Int_t nEvents = 10000000;           //on Proof
10   Int_t nOffset = 0;               //on Proof
11   Int_t nFile2Xml = 10;         //on Grid - how many ESD files to chain in xml
12   TString xmlName="run104157.xml";//new.xml";       //name of the xml collection created
13   // char *indataset = "/home/lmolnar/CERN/alice/Dec01_rv5-25-04_gcc/test/cosmic/100923/09000100923018.10";
14 //   char *indataset = "/COMMON/COMMON/LHC09a4_run8101X";
15   // char *indataset = "/PWG4/kleinb/LHC09a3_90023_checked";///HMPID/lmolnar/run100923";///PWG4/kleinb/LHC09a3_90023_checked";
16    char *indataset = "/home/lmolnar/CERN/alice/Dec01_rv5-25-04_gcc/test/cosmic/100923/09000100923018.10/AliESDs.root";
17  // char *indataset = "/media/data/Data/09000100923018.10/AliESDs.root";
18  // char *indataset = "/media/data/Data/alice/sim/LHC09a1/70213/001/AliESDs.root";
19   
20   //______ Select Local, Proof or Intercative Grid Analysis (but just only one :-))
21   Bool_t bLOCAL        = kFALSE;
22   Bool_t bPROOF        = kFALSE;
23   Bool_t bGRIDINT      = kTRUE;
24
25   AliLog::SetGlobalDebugLevel(2);
26
27
28   //______ Init data set chain
29   TString dataset(indataset);
30   TChain *chain = new TChain("esdTree");
31
32   //______ Define settings for PROOF
33   const char* proofNode = "lmolnar@alicecaf";
34   gEnv->SetValue("XSec.GSI.DelegProxy","2");
35   gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
36   gSystem->Load("libSTEERBase");
37   gSystem->Load("libESD");
38   gSystem->Load("libAOD");
39   gSystem->Load("libANALYSIS");
40   gSystem->Load("libANALYSISalice");  
41  //______ Create analysis manager
42    AliAnalysisManager *mgr  = new AliAnalysisManager("HMPID Analysis Train", "HMPID Analysis Train");
43    //______ Create input handler, default ESD
44    AliESDInputHandler *esdHandler = new AliESDInputHandler();
45    mgr->SetInputEventHandler(esdHandler);
46    mgr->SetDebugLevel(0);
47    AliLog::SetGlobalLogLevel(0);
48    //______ Create default input container
49    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
50    AliAnalysisDataContainer *hmpoutput= mgr->CreateContainer("hmpoutput", TList::Class(),AliAnalysisManager::kOutputContainer,"HmpidOutput.root");
51   
52    if(bLOCAL) 
53   {
54    
55    Printf("========> Running LOCAL HMPID Analysis <=========");
56    gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
57    gSystem->Load("libSTEERBase");
58    gSystem->Load("libESD");
59    gSystem->Load("libAOD");
60    gSystem->Load("libANALYSIS");
61    gSystem->Load("libANALYSISalice");  
62    //chain = CreateESDChain(dataset.Data());//,1,0,kFALSE,kFALSE,0);
63     chain->Add(indataset);  
64    gSystem->SetIncludePath("-I. -I$HOME/HMPID -I$ALICE_ROOT/include -I$ROOTSYS/include");
65    gROOT->LoadMacro(Form("%s/HMPID/AliHMPIDAnalysisTask.cxx++g",gSystem->Getenv("ALICE_ROOT")));//"AliHMPIDAnalysisTask.cxx++");
66    AliHMPIDAnalysisTask *hmpTask = new AliHMPIDAnalysisTask("HMPIDAnalysisTask");
67    mgr->AddTask(hmpTask);  
68   }
69   else if(bPROOF) 
70   {
71     Printf("========> Running PROOF HMPID Analysis <=========");
72     TProof::Open(proofNode);  
73     /*
74     gProof->UploadPackage("STEERBase.par");
75     gProof->EnablePackage("STEERBase");    
76     gProof->UploadPackage("ESD.par");      
77     gProof->EnablePackage("ESD");       
78     gProof->UploadPackage("ANALYSIS.par"); 
79     gProof->EnablePackage("ANALYSIS");     
80     gProof->UploadPackage("ANALYSISalice.par");
81     gProof->EnablePackage("ANALYSISalice");
82     */
83     gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-17-Release/AF-v4-17");
84     gProof->EnablePackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-17-Release/AF-v4-17");   
85     gProof->Load(Form("%s/HMPID/AliHMPIDAnalysisTask.cxx++g",gSystem->Getenv("ALICE_ROOT")));
86     AliHMPIDAnalysisTask *hmpTask = new AliHMPIDAnalysisTask("HMPIDAnalysisTask");
87     mgr->AddTask(hmpTask);    
88   }
89   else if(bGRIDINT) 
90   {
91     Printf("========> Running INTERCATIVE GRID HMPID Analysis <=========");
92     gSystem->Load("libSTEERBase");
93     gSystem->Load("libESD");
94     gSystem->Load("libANALYSIS");
95     gSystem->Load("libANALYSISalice");  
96     //______ Add HMPID task 
97     gSystem->SetIncludePath("-I. -I$HOME/HMPID -I$ALICE_ROOT/include -I$ROOTSYS/include");
98     gROOT->LoadMacro("$ALICE_ROOT/HMPID/AliHMPIDAnalysisTask.cxx++");
99   
100        
101     TGrid::Connect("alien://");
102     chain = CreateChainFromCollection(xmlName.Data(),"esdTree",nFile2Xml); 
103     //gROOT->LoadMacro(Form("%s/HMPID/AliHMPIDAnalysisTask.cxx++g",gSystem->Getenv("ALICE_ROOT")));//"AliHMPIDAnalysisTask.cxx++");
104     //gROOT->LoadMacro("$ALICE_ROOT/HMPID/AliHMPIDAnalysisTask.cxx++");
105     AliHMPIDAnalysisTask *hmpTask = new AliHMPIDAnalysisTask("HMPIDAnalysisTask");
106     mgr->AddTask(hmpTask);  
107      
108   }
109   
110    
111   if(bLOCAL) 
112   {
113    //______ Add HMPID task 
114    gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
115    gSystem->Load("libSTEERBase");
116    gSystem->Load("libESD");
117    gSystem->Load("libAOD");
118    gSystem->Load("libANALYSIS");
119    gSystem->Load("libANALYSISalice");  
120    
121
122   }
123   if ( bPROOF ) 
124   {
125     
126   } 
127   
128    mgr->ConnectInput(hmpTask,0,cinput);
129    mgr->ConnectOutput(hmpTask,0,hmpoutput);
130  
131    
132       
133     if (mgr->InitAnalysis()) {
134        mgr->PrintStatus();
135        if(bLOCAL || bGRIDINT) mgr->StartAnalysis("local",chain);
136        else if(bPROOF) mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);
137      }
138      
139 }   
140 //__________________________________________________________________________________
141 TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)
142 {
143 // Create a chain from an alien collection.                                                                          
144    TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);
145
146    if (!myCollection) {
147       ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
148      return NULL ;
149    }
150
151   TChain* chain = new TChain(treeName);
152   myCollection->Reset() ;
153   Int_t iCount = 0;
154   while ( myCollection->Next() ){
155     if(nFiles!=0)iCount++;
156     if(iCount > nFiles)break;
157     chain->Add(myCollection->GetTURL("")) ;
158     Printf("Adding %s",myCollection->GetTURL(""));
159   }
160   chain->ls();
161   return chain;
162 }    
163 //__________________________________________________________________________________  
164 void SetupPar(char* pararchivename)
165 {
166   //Load par files, create analysis libraries                                                         
167   //For testing, if par file already decompressed and modified                                        
168   //classes then do not decompress.                                                                   
169
170   TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
171   TString parpar(Form("%s.par", pararchivename)) ;
172   
173   if (!gSystem->AccessPathName(pararchivename) ) {
174     TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
175     gROOT->ProcessLine(processline.Data());
176   }
177
178   TString ocwd = gSystem->WorkingDirectory();
179   gSystem->ChangeDirectory(pararchivename);
180
181   // check for BUILD.sh and execute                                                                   
182   if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
183     printf("*******************************\n");
184     printf("*** Building PAR archive    ***\n");
185     cout<<pararchivename<<endl;
186     printf("*******************************\n");
187
188     if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
189       Error("runProcess","Cannot Build the PAR Archive! - Abort!");
190       return -1;
191     }
192   }
193   // check for SETUP.C and execute                                                                    
194   if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
195     printf("*******************************\n");
196     printf("*** Setup PAR archive       ***\n");
197     cout<<pararchivename<<endl;
198     printf("*******************************\n");
199     gROOT->Macro("PROOF-INF/SETUP.C");
200   }
201
202   gSystem->ChangeDirectory(ocwd.Data());
203   printf("Current dir: %s\n", ocwd.Data());
204 }
205