4895ff9b4a79888b16c5575dfdc2097f4bfba59a
[u/mrichter/AliRoot.git] / PWGGA / PHOSTasks / PHOS_embedding / Embedding.C
1 void Embedding(const char* dataset="collection.xml")
2 {
3     
4   gSystem->Load("libTree");
5   gSystem->Load("libGeom");
6   gSystem->Load("libVMC");
7   gSystem->Load("libPhysics");
8   
9   //load analysis framework
10   gSystem->Load("libSTEERBase");
11   gSystem->Load("libANALYSIS");
12   gSystem->Load("libANALYSISalice"); //AliAnalysisTaskSE
13   
14   gSystem->AddIncludePath("-I$ALICE_ROOT/include -I$ALICE_ROOT/PHOS");
15
16   // A task can be compiled dynamically with AClic
17   gROOT->LoadMacro("AliPHOSEmbedding.cxx+g");
18   
19   // Connect to alien
20   TString token = gSystem->Getenv("GRID_TOKEN") ;
21   if (1) // token == "OK" ) 
22     TGrid::Connect("alien://");
23   else 
24     AliInfo("You are not connected to the GRID") ; 
25   cout << "Pi0Analysis: processing collection " << dataset << endl;
26   
27   // Create the chain
28   TChain* chain = new TChain("esdTree");
29
30   TGridCollection * collection = dynamic_cast<TGridCollection*>(TAlienCollection::Open(dataset));
31   
32   TAlienResult* result = collection->GetGridResult("",0 ,0);
33   TList* rawFileList = result->GetFileInfoList();
34   for (Int_t counter=0 ; counter < rawFileList->GetEntries() ; counter++) {
35     TFileInfo * fi =  static_cast<TFileInfo*>(rawFileList->At(counter)) ; 
36     const char * rawFile = fi->GetCurrentUrl()->GetUrl() ;  
37     printf("Processing %s\n", rawFile) ;
38     chain->Add(rawFile);
39     printf("Chain: %d entries.\n",chain->GetEntries()); 
40   }
41   TFileInfo * fi =  static_cast<TFileInfo*>(rawFileList->At(0));
42   const char * fn = fi->GetCurrentUrl()->GetUrl() ;
43
44   char runNum[7]; 
45   for(Int_t i=0;i<6;i++)runNum[i]=fn[35+i] ;
46
47   runNum[6]=0 ;
48   Int_t iRunNum=atoi(runNum) ;
49   printf("Run number=%d \n",iRunNum) ;
50
51   //Run AOD simulation
52   int nrun = atoi(runNum);
53   int nevent = 0;
54   int seed = 0;
55
56   char sseed[1024];
57   char sevent[1024];
58   char sprocess[1024];
59   char sfield[1024];
60   char senergy[1024];
61
62   sprintf(sevent,"");
63   sprintf(sprocess,"");
64   sprintf(sfield,"");
65   sprintf(senergy,"");
66
67   seed = 0;
68   sprintf(sseed,"%d",seed);
69
70   if (seed==0) {
71     fprintf(stderr,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
72     fprintf(stderr,"!!!!  WARNING! Seeding variable for MC is 0          !!!!\n");
73     fprintf(stderr,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
74   } else {
75     fprintf(stdout,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
76     fprintf(stdout,"!!!  MC Seed is %d \n",seed);
77     fprintf(stdout,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
78   }
79   
80 // set the seed environment variable
81   gSystem->Setenv("CONFIG_SEED",sseed);
82   gSystem->Setenv("CONFIG_RUN_TYPE","kPythia6"); // kPythia6 or kPhojet^M
83   gSystem->Setenv("CONFIG_FIELD","k5kG");      // kNoField or k5kG^M
84   gSystem->Setenv("CONFIG_ENERGY","2760");    // 900 or 10000 (GeV)
85   gSystem->Setenv("DC_RUN",runNum);    //run number 
86   
87
88   char nSimEvents[55] ;
89   sprintf(nSimEvents,"%d",chain->GetEntries());
90   gSystem->Setenv("SIM_EVENTS",nSimEvents); 
91   gSystem->Exec("mv geometry.root geometry_PHOS.root") ;
92   gSystem->Exec("aliroot -b -q simrun.C > simrun.log 2>&1");
93   gSystem->Exec("mv geometry_PHOS.root geometry.root") ;
94
95   // Make the analysis manager
96   AliAnalysisManager *mgr = new AliAnalysisManager("Pi0EmbeddingManager");
97   
98   // ESD input handler
99   AliESDInputHandler* esdH = new AliESDInputHandler();
100   esdH->SetReadFriends(kFALSE);
101   mgr->SetInputEventHandler(esdH);
102
103   // Output
104   AliAODHandler* aodHandler   = new AliAODHandler();
105   aodHandler->SetOutputFileName("AliAODout.root");
106   mgr->SetOutputEventHandler(aodHandler);
107
108   
109   // Debug level
110   mgr->SetDebugLevel(0);
111
112
113   // Add physics selection
114   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
115   AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kFALSE);
116
117   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
118   AliCentralitySelectionTask *taskCentrality = AddTaskCentrality() ;
119
120   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
121   AliEPSelectionTask *taskEP = AddTaskEventplane() ;
122
123   // Add my task
124   AliPHOSEmbedding *task1 = new AliPHOSEmbedding("Embedding");
125
126   TChain* chainAOD = new TChain("aodTree");
127   chainAOD->AddFile("AliAOD.root") ;
128   task1->SetSignalChain(chainAOD) ;
129   task1->SelectCollisionCandidates();
130
131
132   TFile *fOldCalib = TFile::Open("OldCalibration.root");
133   if(fOldCalib->IsOpen()){
134     printf("\n\n...Adding PHOS calibration used in ESD production \n") ;
135     char key[55] ;
136     TH2F * hCalib[5] ;
137     for(Int_t mod=0;mod<5; mod++){
138       sprintf(key,"calibrationMod%d",mod) ;
139       hCalib[mod] = (TH2F*)fOldCalib->Get(key) ;
140     }
141     task1->SetOldCalibration(hCalib) ;
142     fOldCalib->Close() ;
143   }
144
145   mgr->AddTask(task1);
146   
147   // Create containers for input/output
148   AliAnalysisDataContainer *cinput   = mgr->GetCommonInputContainer(); 
149   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("output0",
150                       TTree::Class(), AliAnalysisManager::kOutputContainer);
151
152
153   // Connect input/output
154   mgr->ConnectInput(task1 , 0, cinput);
155   mgr->ConnectOutput(task1, 0,coutput1);
156
157   AliLog::SetClassDebugLevel("AliGeomManager", 10) ;
158
159   AliCDBManager::Instance()->SetRun(iRunNum) ;
160 //  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB") ;
161 //  AliCDBManager::Instance()->SetDefaultStorage("raw://") ;
162   AliCDBManager::Instance()->SetDefaultStorage("alien://folder=/alice/data/2010/OCDB") ;
163   AliCDBManager::Instance()->SetSpecificStorage("PHOS/*/*",
164                                                 "local://OCDB");
165 printf("RunNunm===%d \n",iRunNum) ;
166   
167
168   if (mgr->InitAnalysis()) {
169     mgr->PrintStatus();
170     mgr->StartAnalysis("local", chain);
171   }
172   
173   if(iRunNum<=137848){ //period 1
174     gSystem->Exec("mv BadMap_LHC10h_period1.root BadMap_LHC10h.root") ;
175   }
176   else{
177     gSystem->Exec("mv BadMap_LHC10h_period234.root BadMap_LHC10h.root") ;
178   }
179   gSystem->Exec("aliroot -b -q AnalyzeDiff.C> analyze3.log 2>&1");
180
181 }