]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/multiplicity/AliMultiplicityTask.cxx
replaced THXF to THX in many function prototypes
[u/mrichter/AliRoot.git] / PWG0 / multiplicity / AliMultiplicityTask.cxx
index be7b3630d82d1d0e14710255e0adcf35a602d0c1..061b0519de1c7800725ac720e188961ae1285c83 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "AliESDtrackCuts.h"
 #include "AliPWG0Helper.h"
-#include "dNdEta/AliMultiplicityCorrection.h"
+#include "multiplicity/AliMultiplicityCorrection.h"
 #include "AliCorrection.h"
 #include "AliCorrectionMatrix3D.h"
 
@@ -42,6 +42,7 @@ AliMultiplicityTask::AliMultiplicityTask(const char* opt) :
   fOption(opt),
   fAnalysisMode(AliPWG0Helper::kSPD),
   fReadMC(kFALSE),
+  fUseMCVertex(kFALSE),
   fMultiplicity(0),
   fEsdTrackCuts(0),
   fSystSkipParticles(kFALSE),
@@ -90,17 +91,18 @@ void AliMultiplicityTask::ConnectInputData(Option_t *)
     Printf("ERROR: Could not read tree from input slot 0");
   } else {
     // Disable all branches and enable only the needed ones
-    //tree->SetBranchStatus("*", 0);
+    tree->SetBranchStatus("*", 0);
 
-    tree->SetBranchStatus("fTriggerMask", 1);
-    tree->SetBranchStatus("fSPDVertex*", 1);
+    tree->SetBranchStatus("AliESDHeader*", 1);
+    tree->SetBranchStatus("*Vertex*", 1);
 
-    if (fAnalysisMode == AliPWG0Helper::kSPD)
-      tree->SetBranchStatus("fSPDMult*", 1);
+    if (fAnalysisMode == AliPWG0Helper::kSPD) {
+      tree->SetBranchStatus("AliMultiplicity*", 1);
+    }
 
     if (fAnalysisMode == AliPWG0Helper::kTPC || fAnalysisMode == AliPWG0Helper::kTPCITS) {
-      AliESDtrackCuts::EnableNeededBranches(tree);
-      tree->SetBranchStatus("fTracks.fLabel", 1);
+      //AliESDtrackCuts::EnableNeededBranches(tree);
+      tree->SetBranchStatus("Tracks*", 1);
     }
 
     AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
@@ -110,6 +112,9 @@ void AliMultiplicityTask::ConnectInputData(Option_t *)
     } else
       fESD = esdH->GetEvent();
   }
+
+  // disable info messages of AliMCEvent (per event)
+  AliLog::SetClassDebugLevel("AliMCEvent", AliLog::kWarning - AliLog::kDebug + 1);
 }
 
 void AliMultiplicityTask::CreateOutputObjects()
@@ -206,12 +211,12 @@ void AliMultiplicityTask::Exec(Option_t*)
   // only FASTOR
   //Bool_t eventTriggered = fESD->GetTriggerMask() & 32;
 
-  Bool_t eventVertex = AliPWG0Helper::IsVertexReconstructed(fESD->GetVertex());
+  const AliESDVertex* vtxESD = AliPWG0Helper::GetVertex(fESD, fAnalysisMode);
+  Bool_t eventVertex = (vtxESD != 0);
 
-  // get the ESD vertex
-  const AliESDVertex* vtxESD = fESD->GetVertex();
   Double_t vtx[3];
-  vtxESD->GetXYZ(vtx);
+  if (vtxESD)
+    vtxESD->GetXYZ(vtx);
 
   // post the data already here
   PostData(0, fOutput);
@@ -259,7 +264,7 @@ void AliMultiplicityTask::Exec(Option_t*)
     }
 
     // get multiplicity from ESD tracks
-    TObjArray* list = fEsdTrackCuts->GetAcceptedTracks(fESD);
+    TObjArray* list = fEsdTrackCuts->GetAcceptedTracks(fESD, (fAnalysisMode == AliPWG0Helper::kTPC));
     Int_t nGoodTracks = list->GetEntries();
 
     labelArr = new Int_t[nGoodTracks];
@@ -350,6 +355,17 @@ void AliMultiplicityTask::Exec(Option_t*)
       return;
     }
 
+    if (fUseMCVertex)
+    {
+      Printf("WARNING: Replacing vertex by MC vertex. This is for systematical checks only.");
+      // get the MC vertex
+      AliGenEventHeader* genHeader = header->GenEventHeader();
+      TArrayF vtxMC(3);
+      genHeader->PrimaryVertex(vtxMC);
+
+      vtx[2] = vtxMC[2];
+    }
+
     Bool_t processEvent = kTRUE;
     if (fSelectProcessType > 0)
     {
@@ -631,8 +647,11 @@ void AliMultiplicityTask::Exec(Option_t*)
         delete[] foundTracks;
         delete[] foundPrimaries;
 
-        if ((Int_t) nMCTracks20 == 0 && nESDTracks20 > 3)
-            printf("WARNING: Event has %d generated and %d reconstructed...\n", nMCTracks20, nESDTracks20);
+        if ((Int_t) nMCTracks15 > 15 && nESDTracks15 <= 3)
+        {
+            TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
+            printf("WARNING: Event %lld %s (vtx-z = %f) has %d generated and %d reconstructed...\n", tree->GetReadEntry(), tree->GetCurrentFile()->GetName(), vtxMC[2], nMCTracks15, nESDTracks15);
+        }
 
         // fill response matrix using vtxMC (best guess)
         fMultiplicity->FillCorrection(vtxMC[2],  nMCTracks05,  nMCTracks09,  nMCTracks15,  nMCTracks20,  nMCTracksAll,  nESDTracks05,  nESDTracks09,  nESDTracks15,  nESDTracks20);
@@ -672,7 +691,7 @@ void AliMultiplicityTask::Terminate(Option_t *)
     return;
   }
 
-  TFile* file = TFile::Open("multiplicityMC.root", "RECREATE");
+  TFile* file = TFile::Open("multiplicity.root", "RECREATE");
 
   fMultiplicity->SaveHistograms();
   for (Int_t i = 0; i < 4; ++i)
@@ -686,5 +705,5 @@ void AliMultiplicityTask::Terminate(Option_t *)
 
   file->Close();
 
-  Printf("Writting result to multiplicityMC.root");
+  Printf("Writting result to multiplicity.root");
 }