]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/macros/AODtrain.C
Updated QA macros from Mihaela
[u/mrichter/AliRoot.git] / ANALYSIS / macros / AODtrain.C
index 0a3fe491966565a87bf550c7623a1af51cddacde..cca6a294cbc85e52c587100835bf3a192909ba20 100644 (file)
@@ -1,9 +1,10 @@
 // ### Settings that make sense when using the Alien plugin
 //==============================================================================
 Int_t       runOnData          = 1;       // Set to 1 if processing real data
-Int_t       iCollision         = 1;       // 0=pp, 1=Pb-Pb
+Int_t       iCollision         = 0;       // 0=pp, 1=Pb-Pb
 Int_t       run_flag           = 1100;    // year (2011 = 1100)
 //==============================================================================
+Bool_t      doCDBconnect        =1;
 Bool_t      usePhysicsSelection = kTRUE; // use physics selection
 Bool_t      useTender           = kFALSE; // use tender wagon
 Bool_t      useCentrality       = kTRUE; // centrality
@@ -20,18 +21,26 @@ Bool_t      useSysInfo          = kFALSE; // use sys info
 //==============================================================================
 Int_t       iAODhandler        = 1;      // Analysis produces an AOD or dAOD's
 Int_t       iESDfilter         = 1;      // ESD to AOD filter (barrel + muon tracks)
+Int_t       iESDfilterReVtx    = -1;     // Request revertexing in ESD filtering
 Int_t       iMUONcopyAOD       = 1;      // Task that copies only muon events in a separate AOD (PWG3)
 Int_t       iJETAN             = 1;      // Jet analysis (PWG4)
 Int_t       iJETANdelta        = 1;      // Jet delta AODs
 Int_t       iPWGHFvertexing     = 1;      // Vertexing HF task (PWG3)
-Int_t       iPWGDQJPSIfilter    = 1;      // JPSI filtering (PWG3)
-Int_t       iPWGHFd2h           = 0;      // D0->2 hadrons (PWG3)
+Int_t       iPWGDQJPSIfilter    = 0;      // JPSI filtering (PWG3)
+Int_t       iPWGHFd2h           = 1;      // D0->2 hadrons (PWG3)
+Int_t       iPWGPP               =1;      // high pt filter task
+Int_t       iPWGLFForward       = 1;      // Forward mult task (PWGLF)
+Bool_t doPIDResponse  = 1;
+Bool_t doPIDqa        = 1; //new
 
 // ### Configuration macros used for each module
 //==============================================================================
  TString configPWGHFd2h = (iCollision==0)?"$ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF.C"
                           :"$ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C";
-                                                 
+
+
+Double_t    *cutsESDfilterReVtx = 0;     // optional cuts for revertexing
+                                             
 // Temporaries.
 void AODmerge();
 void AddAnalysisTasks();
@@ -39,13 +48,15 @@ Bool_t LoadCommonLibraries();
 Bool_t LoadAnalysisLibraries();
 Bool_t LoadLibrary(const char *);
 TChain *CreateChain();
+const char *cdbPath = "raw://";
+Int_t run_number = 0;
 
 //______________________________________________________________________________
 void AODtrain(Int_t merge=0)
 {
 // Main analysis train macro.
 
-  if (merge) {
+  if (merge || doCDBconnect) {
     TGrid::Connect("alien://");
     if (!gGrid || !gGrid->IsConnected()) {
       ::Error("QAtrain", "No grid connection");
@@ -62,7 +73,10 @@ void AODtrain(Int_t merge=0)
    printf("=  Configuring analysis train for:                               =\n");
    if (usePhysicsSelection)   printf("=  Physics selection                                                =\n");
    if (useTender)    printf("=  TENDER                                                        =\n");
-   if (iESDfilter)   printf("=  ESD filter                                                    =\n");
+   if (iESDfilter)   {
+     printf("=  ESD filter                                                    =\n");
+     if (iESDfilterReVtx>=0)  printf("=  ESD event revertexed before filterering, algo %2d              =\n",iESDfilterReVtx);
+   }
    if (iMUONcopyAOD) printf("=  MUON copy AOD                                                 =\n");
    if (iJETAN)       printf("=  Jet analysis                                                  =\n");
    if (iJETANdelta)  printf("=     Jet delta AODs                                             =\n");
@@ -105,7 +119,7 @@ void AODtrain(Int_t merge=0)
    // Debugging if needed
    if (useDBG) mgr->SetDebugLevel(3);
 
-   AddAnalysisTasks();
+   AddAnalysisTasks(cdbPath);
    if (merge) {
       AODmerge();
       mgr->InitAnalysis();
@@ -129,7 +143,7 @@ void AODtrain(Int_t merge=0)
 }                                                                                                                                          
                                                                                                                                             
 //______________________________________________________________________________                                                           
-void AddAnalysisTasks(){                                                                                                                                          
+void AddAnalysisTasks(const char *cdb_location){                                                                                                                                          
   // Add all analysis task wagons to the train                                                                                               
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();                                                                     
 
@@ -143,7 +157,34 @@ void AddAnalysisTasks(){
       AliAnalysisTaskSE *tender = AddTaskTender(useV0tender);
 //      tender->SetDebugLevel(2);
    }
-
+   //
+  // PIDResponse(JENS)
+  //
+  if (doPIDResponse) {
+    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C"); 
+    AliAnalysisTaskPIDResponse *PIDResponse = AddTaskPIDResponse();
+//    PIDResponse->SelectCollisionCandidates(AliVEvent::kAny);
+  }  
+  //
+  // PIDqa(JENS)
+  //
+  if (doPIDqa) {
+    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
+    AliAnalysisTaskPIDqa *PIDQA = AddTaskPIDqa();
+    PIDQA->SelectCollisionCandidates(AliVEvent::kAny);
+  }  
+  // CDB connection
+  //
+  if (doCDBconnect && !useTender) {
+    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskCDBconnect.C");
+    AliTaskCDBconnect *taskCDB = AddTaskCDBconnect(cdb_location, run_number);
+    if (!taskCDB) return;
+    AliCDBManager *cdb = AliCDBManager::Instance();
+    cdb->SetDefaultStorage(cdb_location);
+//    taskCDB->SetRunNumber(run_number);
+  }    
    if (usePhysicsSelection) {
    // Physics selection task
       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
@@ -153,24 +194,50 @@ void AddAnalysisTasks(){
 //      physSelTask->GetPhysicsSelection()->SetCustomOADBObjects(oadbDefaultPbPb,0,0);
       mgr->AddStatisticsTask(AliVEvent::kAny);
    }
+   
+
+//Jacek
+   if (iPWGPP) {
+      gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskFilteredTree.C");
+      AddTaskFilteredTree("FilterEvents_Trees.root");
+   }   
+   
    // Centrality (only Pb-Pb)
-   if (iCollision && useCentrality) {
+   if (useCentrality) {
       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
       AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
-      taskCentrality->SelectCollisionCandidates(AliVEvent::kAny);
+      //taskCentrality->SelectCollisionCandidates(AliVEvent::kAny);
+   }
+   
+// --- PWGLF - Forward (cholm@nbi.dk) -----------------------------
+   if (iPWGLFForward && usePhysicsSelection) { 
+        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskForwardMult.C");
+     UShort_t pwglfForwardSys = 0; // iCollision+1; // pp:1, PbPb:2, pPb:3
+     UShort_t pwglfSNN        = 0;            // GeV, 0==unknown
+     Short_t  pwglfField      = 0;
+     AddTaskForwardMult(useMC && useTR,        // Need track-refs 
+                       pwglfForwardSys,       // Collision system
+                       pwglfSNN, 
+                       pwglfField);
+        gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskCentralMult.C");
+        AddTaskCentralMult(useMC, pwglfForwardSys, pwglfSNN, pwglfField);
    }
+    
 
    if (iESDfilter) {
       //  ESD filter task configuration.
-      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
+      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/ESDfilter/macros/AddTaskESDFilter.C");
+      AliAnalysisTaskESDfilter *taskesdfilter = 0;
       if (iMUONcopyAOD) {
          printf("Registering delta AOD file\n");
          mgr->RegisterExtraFile("AliAOD.Muons.root");
          mgr->RegisterExtraFile("AliAOD.Dimuons.root");
-         AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,AliESDpid::kTOF_T0,kTRUE,kFALSE,kFALSE,run_flag);
+         taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag);
       } else {
-          AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,AliESDpid::kTOF_T0,kTRUE,kFALSE,kFALSE,run_flag); // others
+       taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag); // others
       }   
+      if (iESDfilterReVtx>=0 && taskesdfilter) taskesdfilter->SetRefitVertexTracks(iESDfilterReVtx, cutsESDfilterReVtx);
    }   
 
 // ********** PWG3 wagons ******************************************************           
@@ -208,8 +275,8 @@ void AddAnalysisTasks(){
    Bool_t  kIsPbPb = (iCollision==0)?false:true; // can be more intlligent checking the name of the data set
    TString kDefaultJetBackgroundBranch = "";
    TString kJetSubtractBranches = "";
-   UInt_t kHighPtFilterMask = 128;// from esd filter
-   UInt_t iPhysicsSelectionFlag = AliVEvent::kMB;
+   UInt_t kHighPtFilterMask = 272;// from esd filter
+   UInt_t iPhysicsSelectionFlag = 0;
    if (iJETAN) {
      gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJets.C");
      // Default jet reconstructor running on ESD's
@@ -266,7 +333,6 @@ void AddAnalysisTasks(){
      } 
    }
 }
-
 //______________________________________________________________________________
 Bool_t LoadCommonLibraries()
 {
@@ -299,10 +365,15 @@ Bool_t LoadCommonLibraries()
 Bool_t LoadAnalysisLibraries()
 {
 // Load common analysis libraries.
-   if (useTender) {
+   if (useTender || doCDBconnect) {
       if (!LoadLibrary("TENDER") ||
           !LoadLibrary("TENDERSupplies")) return kFALSE;
    }       
+   // CDBconnect
+   if (doCDBconnect && !useTender) {
+      if (!LoadLibrary("PWGPP")) return kFALSE;
+   }
+          
    if (iESDfilter || iPWGMuonTrain) {
       if (!LoadLibrary("PWGmuon")) return kFALSE;
    }   
@@ -317,12 +388,23 @@ Bool_t LoadAnalysisLibraries()
           !LoadLibrary("siscone") ||
           !LoadLibrary("SISConePlugin") ||
           !LoadLibrary("FASTJETAN")) return kFALSE;
-   }     
+   }  
+   // PWG2 FORWARD
+   if (iPWGLFForward) {
+      //if (!LoadLibrary("PWGLFforward", mode, kTRUE)) return kFALSE;
+      if (!LoadLibrary("PWGLFforward2")) return kFALSE;
+   }   
+   
    // PWG3 Vertexing HF
-   if (iPWGHFvertexing || iPWG3d2h) {
-      if (!LoadLibrary("PWG3base") ||
+   if (iPWGHFvertexing || iPWGHFd2h) {
+      if (!LoadLibrary("PWGflowBase") ||
+          !LoadLibrary("PWGflowTasks") ||
           !LoadLibrary("PWGHFvertexingHF")) return kFALSE;
-   }   
+   }    
+ //    if (iPWGHFvertexing || iPWG3d2h) {
+ //     if (!LoadLibrary("PWG3base") ||
+ //         !LoadLibrary("PWGHFvertexingHF")) return kFALSE;
+ //  }   
    // PWG3 dielectron
    if (iPWGDQJPSIfilter) {
       if (!LoadLibrary("PWGDQdielectron")) return kFALSE;
@@ -383,8 +465,7 @@ void AODmerge()
   TStopwatch timer;
   timer.Start();
   TString outputDir = "wn.xml";
-  TString outputFiles = "EventStat_temp.root,AODQA.root,AliAOD.root,AliAOD.VertexingHF.root,";
-  outputFiles +=        "AliAOD.Muons.root,AliAOD.Jets.root";
+  TString outputFiles = "EventStat_temp.root,AODQA.root,AliAOD.root,AliAOD.VertexingHF.root,FilterEvents_Trees.root,AliAOD.Muons.root,AliAOD.Jets.root";
   TString mergeExcludes = "";
   TObjArray *list = outputFiles.Tokenize(",");
   TIter *iter = new TIter(list);
@@ -402,7 +483,7 @@ void AODmerge()
     merged = AliAnalysisAlien::MergeOutput(outputFile, outputDir, 10, 0);
     if (!merged) {
        printf("ERROR: Cannot merge %s\n", outputFile.Data());
-       return;
+       continue;
     }
   }
   // all outputs merged, validate