]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/PilotTrain/PilotAnalysis.C
new T0 QA from Alla
[u/mrichter/AliRoot.git] / PWG1 / PilotTrain / PilotAnalysis.C
index a60515ec579e8f3c1eff1b0a16ced372f1309aff..1a5ace8dd8d8e91fcce7b93a00f92693fa30323f 100644 (file)
@@ -4,60 +4,72 @@ void AddAnalysisTasks();
 class AliAnalysisAlien;                                                                                                                    
 AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode);
 
-Int_t runNumbers[5] = {121040};
+// Collision type: 0 = p-p   1 = Pb-Pb
+Int_t  iCollisionType = 0;
+Int_t runNumbers[5] = {145384};
 
-Bool_t doQAsym        = 1;
-Bool_t doVZERO        = 0;   // there is a 2nd file
-Bool_t doVertex       = 0;
-Bool_t doSPD          = 0;   // needs RP   
-Bool_t doFMD          = 0;
-Bool_t doTPC          = 0;
+Bool_t doCDBconnect   = 1;
 Bool_t doEventStat    = 1;
-Bool_t doSDD          = 0;   // needs RP
-Bool_t doSSDdEdx      = 0;
-// new 
+Bool_t doCentrality   = 0;
+Bool_t doQAsym        = 1;
+Bool_t doVZERO        = 1;   // there is a 2nd file
+Bool_t doVertex       = 1;
+Bool_t doSPD          = 1;   // needs RP   
+Bool_t doTPC          = 1;
+Bool_t doSDD          = 1;   // needs RP
+Bool_t doSSDdEdx      = 1;
+
 Bool_t doTRD          = 0;
-Bool_t doITS          = 0;
-Bool_t doCALO         = 0;
-Bool_t doMUONTrig     = 0;
-Bool_t doImpParRes    = 0;
-Bool_t doMUON         = 0;
+Bool_t doITS          = 1;
+Bool_t doITSsaTracks  = 1;   // new
+Bool_t doITSalign     = 0;   // new (try to load geom)
+Bool_t doCALO         = 1;
+Bool_t doMUONTrig     = 1;
+Bool_t doImpParRes    = 1;
+Bool_t doMUON         = 1;
+Bool_t doTOF          = 1;
+Bool_t doHMPID        = 1;
+Bool_t doT0           = 1; // new
+Bool_t doZDC          = 0;
 
 Bool_t doMUONEff      = 0;   // NEEDS geometry
 Bool_t doV0           = 0;   // NEEDS MCtruth 
 
 TString     train_name         = "QA";      // QA local folder name
-TString     train_tag          = "";        // Train special tag appended to 
+TString     train_tag          = (iCollisionType)?"_Pb-Pb":"_p-p";        // Train special tag appended to 
                                             // visible name. ("sim", "pp", ...)
                // Name in train page (DON'T CHANGE)
 TString     visible_name       = Form("QA$2_$3%s", train_tag.Data()); //# FIXED #
-TString     job_comment        = "PWG1 QA train"; // Can add observations here
+TString     job_comment        = "PWG1 QA train(no TRD, no ZDC)"; // Can add observations here
                // Job tag (DON'T CHANGE)
-TString     job_tag            = Form("%s: %s", visible_name.Data(), job_comment.Data());;
+TString     job_tag            = Form("%s: %s", visible_name.Data(), job_comment.Data());
                // Package versions - Modify as needed
-TString     root_version       = "v5-27-05";
-TString     aliroot_version    = "v4-20-07-AN";
+TString     root_version       = "v5-28-00a";
+TString     aliroot_version    = "v4-21-17b-AN";
                // Production directory - change as needed for test mode
-TString     grid_datadir       = "/alice/data/2010/LHC10c";
+TString     grid_datadir       = "/alice/data/2011/LHC11a";
                // Work directory in GRID (DON'T CHANGE)
 TString     grid_workdir       = "/alice/cern.ch/user/a/alidaq/QA/QA$2";
                // Job splitting
 Int_t       grid_split         = 20;       // Splitting
                // Debug level
-Int_t       debug_level        = 0;        // Debugging
+Int_t       debug_level        = 1;        // Debugging
+               // File merging
+Int_t       maxMergeFiles      = 10;       // Max files to merge in a chunk
                // Data pattern - change as needed for test mode
-TString     data_pattern       = "*ESDs/pass2/*ESDs.root";
+TString     data_pattern       = "*ESDs/Pass1/*ESDs.root";
                // Output directory (DON'T CHANGE)
 TString     alien_outdir       = "$1/QA$2";
                // Input collection (production mode)
 TString     data_collection    = "$1/qa1.xml";
 TString     mergeExcludes      = ""; // Files to be excluded for merging
-TString     terminateFiles     = ""; // Files produced during Terminate
+TString     mergeDirName       = "QA$2";
+TString     terminateFiles     = "trending.root"; // Files produced during Terminate
 
 Bool_t useProductionMode       = kTRUE;
 Bool_t useMergeViaJDL          = kTRUE;
-Bool_t useFastReadOption       = kTRUE;
-Bool_t useOverwriteMode        = kFALSE;
+Bool_t useFastReadOption       = kFALSE;
+Bool_t useOverwriteMode        = kTRUE;
 Bool_t useDevelopmentVersion   = kFALSE;
 
 void PilotAnalysis(const char *plugin_mode = "full")
@@ -91,17 +103,25 @@ void PilotAnalysis(const char *plugin_mode = "full")
   out << "   doSPD           = " << doSPD << ";" << endl;
   out << "   doSDD           = " << doSDD << ";" << endl;
   out << "   doSSDdEdx       = " << doSSDdEdx << ";" << endl;
-  out << "   doFMD           = " << doFMD << ";" << endl;
   out << "   doTPC           = " << doTPC << ";" << endl;
   out << "   doTRD           = " << doTRD << ";" << endl;
+  out << "   doITS           = " << doITS << ";" << endl;
+  out << "   doITSsaTracks   = " << doITSsaTracks << ";" << endl;
+  out << "   doITSalign      = " << doITSalign << ";" << endl;
+  out << "   doZDC           = " << doZDC << ";" << endl;
   out << "   doImpParRes     = " << doImpParRes << ";" << endl;
   out << "   doMUON          = " << doMUON << ";" << endl;
+  out << "   doTOF           = " << doTOF << ";" << endl;
+  out << "   doHMPID         = " << doHMPID << ";" << endl;
+  out << "   doZDC           = " << doZDC << ";" << endl;
+  out << "   doT0            = " << doT0 << ";" << endl;
   out << "   doEventStat     = " << doEventStat << ";" << endl;
+  if (iCollisionType) out << "   doCentrality    = " << doCentrality << ";" << endl;
   out << "}" << endl;
   out.close();
   
   // Load libraries
-  gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD");
+  gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWG1");
   LoadLibraries();
   // Create manager
   AliAnalysisManager *mgr  = new AliAnalysisManager("PilotAnalysis", "Production train");
@@ -112,7 +132,6 @@ void PilotAnalysis(const char *plugin_mode = "full")
   esdHandler->SetActiveBranches("ESDfriend");
   mgr->SetInputEventHandler(esdHandler);
   mgr->SetDebugLevel(debug_level);
-  mgr->SetSaveCanvases(kFALSE);
   
   // AnalysisTasks
   AddAnalysisTasks();
@@ -121,7 +140,8 @@ void PilotAnalysis(const char *plugin_mode = "full")
   mgr->SetGridHandler(alienHandler);
   if (mgr->InitAnalysis()) {                                                                                                              
     mgr->PrintStatus(); 
-    mgr->StartAnalysis("grid");
+    if (!strcmp(plugin_mode, "local")) mgr->StartAnalysis("local");
+    else mgr->StartAnalysis("grid");
   }
 }
 
@@ -135,11 +155,10 @@ void LoadLibraries()
   gSystem->Load("libPWG0dep.so");
   gSystem->Load("libPWG0selectors.so");
   gSystem->Load("libPWG1.so");
-  gSystem->Load("libPWG2.so");
-  gSystem->Load("libPWG2forward.so");
 
   if (doCALO) {
      gSystem->Load("libEMCALUtils");
+     gSystem->Load("libPHOSUtils");
      gSystem->Load("libPWG4PartCorrBase");
      gSystem->Load("libPWG4PartCorrDep");
   }  
@@ -154,17 +173,42 @@ void AddAnalysisTasks()
 {
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   mgr->SetCommonFileName("QAresults.root");
+  // Statistics task
+  mgr->AddStatisticsTask(AliVEvent::kMB);
+  //
+  // CDB connection
+  //
+  if (doCDBconnect) {
+    gROOT->LoadMacro("$ALICE_ROOT/PWG1/PilotTrain/AddTaskCDBconnect.C");
+    AliTaskCDBconnect *taskCDB = AddTaskCDBconnect();
+    if (!taskCDB) return;
+    taskCDB->SetRunNumber(runNumbers[0]);
+  }    
+  
   //
   // Event Statistics (Jan Fiete)
   //
-
   if (doEventStat) {
       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
-      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
+      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kFALSE /*MC*/);
 //      mgr->RegisterExtraFile("event_stat.root");
       if (!terminateFiles.IsNull()) terminateFiles += ",";
       terminateFiles += "event_stat.root";
   }
+  
+  //
+  // Centrality (A. Toia)
+  //
+  if (doCentrality) {
+     if (!iCollisionType) {
+        printf("Disabling centrality task for p-p\n");
+        doCentrality = kFALSE;
+     } else {           
+        gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
+        AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
+     }   
+  }   
+  
   // Vertexing (A. Dainese)
   // 
   if (doVertex) {
@@ -189,11 +233,17 @@ void AddAnalysisTasks()
 //  taskv0qa->SelectCollisionCandidates();
   }
   //
-  // TPC (Jacek Otwinowski)
+  // TPC (Jacek Otwinowski & Michael Knichel)
+  //
   //
+  // Optionally MC information can be used by setting the 1st argument to true
+  // Optionally friends information can be switched off by setting the 2st argument 
+  // to false
+  // Optionally highMult axis can be used by setting the 3st argument to true (for PbPb)
   if (doTPC) {
-    gROOT->LoadMacro("$(ALICE_ROOT)/PWG1/TPC/macros/AddTaskPerformanceTPCQA.C");
-    AliPerformanceTask *tpcQA = AddTaskPerformanceTPCQA(kFALSE, kTRUE);
+    gROOT->LoadMacro("$ALICE_ROOT/PWG1/TPC/macros/AddTaskPerformanceTPCdEdxQA.C");
+    AliPerformanceTask *tpcQA = AddTaskPerformanceTPCdEdxQA(kFALSE, kTRUE, kFALSE);
+    tpcQA->SelectCollisionCandidates();
   }  
   //
   // SPD (A. Mastroserio)
@@ -225,9 +275,31 @@ void AddAnalysisTasks()
   //
   if (doITS) {
       gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskPerformanceITS.C");
-      AliAnalysisTaskITSTrackingCheck *itsQA = AddTaskPerformanceITS(kFALSE);
+      AliAnalysisTaskITSTrackingCheck *itsQA = 0;
+      AliAnalysisTaskITSTrackingCheck *itsQACent0010 = 0;
+      AliAnalysisTaskITSTrackingCheck *itsQACent3050 = 0;
+      AliAnalysisTaskITSTrackingCheck *itsQACent6080 = 0;
+      if(iCollisionType==0) {
+        itsQA = AddTaskPerformanceITS(kFALSE);
+      } else {
+        itsQA = AddTaskPerformanceITS(kFALSE);
+        itsQACent0010 = AddTaskPerformanceITS(kFALSE,kFALSE,kFALSE,3500,10000);
+        itsQACent3050 = AddTaskPerformanceITS(kFALSE,kFALSE,kFALSE,590,1570);
+        itsQACent6080 = AddTaskPerformanceITS(kFALSE,kFALSE,kFALSE,70,310);
+      }
   }
   //
+  // ITS saTracks, align (F.Prino)
+  //
+  if (doITSsaTracks) {
+     gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskITSsaTracks.C");
+     AliAnalysisTaskITSsaTracks *itssaTracks = AddTaskITSsaTracks(kFALSE,kFALSE);
+  }   
+  if (doITSalign) {
+     gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskITSAlign.C");
+     AliAnalysisTaskITSAlignQA *itsAlign = AddTaskITSAlign(0,2011);
+  }   
+  //
   // TRD (Alex Bercuci, M. Fasel) 
   //
   if(doTRD) {
@@ -243,13 +315,20 @@ void AddAnalysisTasks()
       AddTrainPerformanceTRD(Translate(doCheckESD, doCheckDET, doEffic, doResolution, doCheckPID, doV0Monitor));
   }
 
+  //
+  // ZDC (Chiara Oppedisano) 
+  //
+  if(doZDC) {
+     gROOT->LoadMacro("$ALICE_ROOT/PWG1/ZDC/AddTaskZDCQA.C");
+     AliAnalysisTaskSE *taskZDC = AddTaskZDCQA();
+  }   
   //
   // Calorimetry (Gustavo Conesa)
   //
 
   if(doCALO) {
       gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/QA/AddTaskCalorimeterQA.C");
-      AliAnalysisTaskParticleCorrelation *taskCaloQA = AddTaskCalorimeterQA("ESD", kTRUE, kFALSE);
+      AliAnalysisTaskParticleCorrelation *taskCaloQA = AddTaskCalorimeterQA("ESD", 2011, kFALSE, kFALSE);
       taskCaloQA->SetDebugLevel(0);
   }
 
@@ -279,26 +358,46 @@ void AddAnalysisTasks()
       gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskV0QA.C");
       AliAnalysisTaskV0QA *taskv0QA = AddTaskV0QA(kFALSE);
   }
-  // FMD (Hans Hjersing Dalsgaard)
   //
-  if (doFMD) {
-    gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis/AddTaskFMD.C");
-    AliAnalysisTaskSE* taskfmd = AddTaskFMD();
-    taskfmd->SelectCollisionCandidates();
-  }  
   // Impact parameter resolution (xianbao.yuan@pd.infn.it, andrea.dainese@pd.infn.it)
   //
   if (doImpParRes) {
     gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskImpParRes.C");
-    AliAnalysisTaskSE* taskimpparres= AddTaskImpParRes();
+    AliAnalysisTaskSE* taskimpparres=0;
+    if(iCollisionType==0) {
+       taskimpparres= AddTaskImpParRes();
+    } else {
+       taskimpparres= AddTaskImpParRes(kFALSE,-1,kFALSE,kFALSE);
+    }
     taskimpparres->SelectCollisionCandidates();
   }  
+  //
   // MUON QA (Philippe Pillot)
   //
   if (doMUON) {
     gROOT->LoadMacro("$ALICE_ROOT/PWG3/muon/AddTaskMuonQA.C");
     AliAnalysisTaskSE* taskmuonqa= AddTaskMuonQA();
   }  
+  //
+  // TOF (Francesca Bellini)
+  //
+  if (doTOF) {
+    gROOT->LoadMacro("$ALICE_ROOT/PWG1/TOF/AddTaskTOFQA.C");
+    AliAnalysisTaskTOFqa *tofQA = AddTaskTOFQA();
+    tofQA->SelectCollisionCandidates();
+  }  
+  //
+  // HMPID QA (Giacomo Volpe)
+  //
+  if (doHMPID) {
+    gROOT->LoadMacro("$ALICE_ROOT/PWG1/HMPID/AddTaskHmpidQA.C");
+    AliAnalysisTaskSE* taskhmpidqa= AddTaskHmpidQA(kFALSE);
+  }      
+  // T0 QA (Alla Mayevskaya
+  if (doT0) {
+    gROOT->LoadMacro("$ALICE_ROOT/PWG1/T0/AddTaskT0QA.C");
+    AliT0AnalysisTaskQA* tast0qa= AddTaskT0QA();
+  }      
 }
 
 //______________________________________________________________________________
@@ -318,7 +417,7 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
    plugin->SetJobTag(job_tag);
    plugin->SetNtestFiles(1);
    plugin->SetCheckCopy(kFALSE);
-   plugin->SetOneStageMerging(kTRUE);
+   plugin->SetMergeDirName(mergeDirName);
 // Set versions of used packages
    plugin->SetAPIVersion("V1.1x");
    plugin->SetROOTVersion(root_version);
@@ -331,7 +430,7 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
    plugin->SetDataPattern(data_pattern);
 // ...then add run numbers to be considered
 //   if (!iAODanalysis) plugin->SetRunRange(run_range[0], run_range[1]);
-//   plugin->SetOutputSingleFolder("output");
+//   plugin->SetOutputSingleFolder("outpu$ALICE_ROOT/PWG1/T0/Addt");
    if (!useProductionMode) {
       plugin->SetRunPrefix("000");
       plugin->SetOutputToRunNo();
@@ -360,14 +459,13 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
 // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
    plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD");
    
-   plugin->SetAdditionalLibs("libCORRFW.so libTENDER.so libPWG0base.so libPWG0dep.so libPWG0selectors.so libPWG1.so libPWG2.so \
-                              libPWG2forward.so libEMCALUtils.so libPWG4PartCorrBase.so libPWG4PartCorrDep.so \
+   plugin->SetAdditionalLibs("libCORRFW.so libTENDER.so libPWG0base.so libPWG0dep.so libPWG0selectors.so libPWG1.so \
+                              libEMCALUtils.so libPHOSUtils.so libPWG4PartCorrBase.so libPWG4PartCorrDep.so \
                               libPWG3base.so libPWG3muon.so libPWG3muondep.so");
      
 // Declare the output file names separated by blancs.
-// (can be like: file.root or file.root@ALICE::Niham::File)
    plugin->SetDefaultOutputs();
-   plugin->SetMaxMergeFiles(20);
+   plugin->SetMaxMergeFiles(maxMergeFiles);
    plugin->SetNrunsPerMaster(1);
    
    // Put default output files to archive
@@ -386,7 +484,7 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
 // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
 //   plugin->SetMaxInitFailed(5);
 // Optionally modify the number of replicas
-   plugin->SetNumberOfReplicas(4);
+   plugin->SetNumberOfReplicas(5);
 // Optionally resubmit threshold.
 //   plugin->SetMasterResubmitThreshold(90);
 // Optionally set time to live (default 30000 sec)
@@ -419,7 +517,7 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
 // May need to reset proof. Supported modes: 0-no reset, 1-soft, 2-hard
    plugin->SetProofReset(0);
 // May limit number of workers
-   plugin->SetNproofWorkers(20);   
+   plugin->SetNproofWorkers(1);   
 // May use a specific version of root installed in proof
    plugin->SetRootVersionForProof("current_dbg");
 // May set the aliroot mode. Check http://aaf.cern.ch/node/83