]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding support for centrality info from event gen header.
authorhansena <alexander.hansen@cern.ch>
Mon, 24 Feb 2014 14:29:39 +0000 (15:29 +0100)
committerhansena <alexander.hansen@cern.ch>
Mon, 24 Feb 2014 14:55:50 +0000 (15:55 +0100)
PWGLF/FORWARD/analysis2/AliForwardFlowTaskQC.h
PWGLF/FORWARD/analysis2/AliForwardMCFlowTaskQC.cxx
PWGLF/FORWARD/analysis2/AliForwardMCFlowTaskQC.h

index 03c8cf64d318adabe035aaef49ab63a0c9cf8703..52e0b388d8a5ff09d4f182f3d959fd4bac5c8ccb 100644 (file)
@@ -628,7 +628,7 @@ protected:
    * 
    * @return Bool_t 
    */
-  Bool_t CheckEvent(const AliAODForwardMult* aodfm);
+  virtual Bool_t CheckEvent(const AliAODForwardMult* aodfm);
   /**
    * Check trigger from AODForwardMult object
    * uses aod header if object is null
index cd280d138c61150fdd7a1b21c55ae4c22b6a39b8..5aae257ce97e0810e9eee41d394eedd487459c19 100644 (file)
@@ -18,6 +18,7 @@
 #include "AliGenEventHeader.h"
 #include "AliAnalysisManager.h"
 #include "AliInputEventHandler.h"
+#include "AliGenEventHeaderTunedPbPb.h"
 
 ClassImp(AliForwardMCFlowTaskQC)
 #if 0
@@ -29,6 +30,7 @@ AliForwardMCFlowTaskQC::AliForwardMCFlowTaskQC()
     fBinsForwardTR(),      // List of FMDTR analysis objects
     fBinsCentralTR(),      // List of SPDTR analysis objects
     fBinsMC(),             // List of MC particle analysis objects
+    fAODMCHeader(),        // MC Header
     fHistdNdedpMC(),       // MC particle d^2N/detadphi histogram
     fHistFMDMCCorr(),      // FMD MC correlation
     fHistSPDMCCorr(),      // SPD MC correlation
@@ -49,6 +51,7 @@ AliForwardMCFlowTaskQC::AliForwardMCFlowTaskQC(const char* name)
     fBinsForwardTR(),      // List of FMDTR analysis objects
     fBinsCentralTR(),      // List of SPDTR analysis objects
     fBinsMC(),             // List of MC particles analysis objects
+    fAODMCHeader(0),       // MC Header
     fHistdNdedpMC(),       // MC particles d^2N/detadphi histogram
     fHistFMDMCCorr(),      // FMD MC correlation
     fHistSPDMCCorr(),      // SPD MC correlation
@@ -84,6 +87,7 @@ AliForwardMCFlowTaskQC::AliForwardMCFlowTaskQC(const AliForwardMCFlowTaskQC& o)
     fBinsForwardTR(),                      // List of FMDTR analysis objects
     fBinsCentralTR(),                      // List of SPDTR analysis objects
     fBinsMC(),                             // List of MC particles analysis objects
+    fAODMCHeader(o.fAODMCHeader),          // MC Header
     fHistdNdedpMC(o.fHistdNdedpMC),        // MC particles d^2N/detadphi histogram
     fHistFMDMCCorr(o.fHistFMDMCCorr),      // FMD MC correlation
     fHistSPDMCCorr(o.fHistSPDMCCorr),      // SPD MC correlation
@@ -109,6 +113,7 @@ AliForwardMCFlowTaskQC::operator=(const AliForwardMCFlowTaskQC& o)
   //    o Object to copy from 
   //
   if (&o == this) return *this;
+  fAODMCHeader     = o.fAODMCHeader;
   fHistdNdedpMC    = o.fHistdNdedpMC;
   fHistFMDMCCorr   = o.fHistFMDMCCorr;
   fHistSPDMCCorr   = o.fHistSPDMCCorr;
@@ -268,6 +273,21 @@ void AliForwardMCFlowTaskQC::Finalize()
   return;
 }
 //_____________________________________________________________________
+Bool_t AliForwardMCFlowTaskQC::CheckEvent(const AliAODForwardMult* aodfm) 
+{
+  // 
+  //  Function to check that an AOD event meets the cuts
+  //
+  //  Parameters: 
+  //   AliAODForwardMult: forward mult object with trigger and vertex info
+  //
+  //  Return: false if there is no trigger or if the centrality or vertex
+  //  is out of range. Otherwise true.
+  //
+  fAODMCHeader = static_cast<AliAODMCHeader*>(fAOD->FindListObject(AliAODMCHeader::StdBranchName()));
+  return AliForwardFlowTaskQC::CheckEvent(aodfm);
+}
+//_____________________________________________________________________
 Bool_t AliForwardMCFlowTaskQC::CheckTrigger(const AliAODForwardMult* aodfm) const 
 {
   //
@@ -295,21 +315,21 @@ Bool_t AliForwardMCFlowTaskQC::GetCentrality(const AliAODForwardMult* aodfm)
   //
   // Returns true when centrality is set.
   //
-//  fCent = 2.5;
-//  return kTRUE;
-  if (fUseImpactPar) {
-    fCent = GetCentFromB();
-    if (fCentAxis->GetXmin() > fCent || fCent >= fCentAxis->GetXmax()) {
-      fHistEventSel->Fill(kInvCent);
-      return kFALSE;
-    }
-    if (fCent != 0) return kTRUE;
-    else {
-      fHistEventSel->Fill(kNoCent);
-      return kFALSE;
-    }
-  } else 
-    return AliForwardFlowTaskQC::GetCentrality(aodfm);
+  AliGenEventHeaderTunedPbPb* header = 
+    dynamic_cast<AliGenEventHeaderTunedPbPb*>(fAODMCHeader->GetCocktailHeader(0));
+  if (header) fCent = header->GetCentrality();
+  else if (fUseImpactPar) fCent = GetCentFromB();
+  else return AliForwardFlowTaskQC::GetCentrality(aodfm);
+  
+  if (fCentAxis->GetXmin() > fCent || fCent >= fCentAxis->GetXmax()) {
+    fHistEventSel->Fill(kInvCent);
+    return kFALSE;
+  }
+  if (fCent != 0) return kTRUE;
+  else {
+    fHistEventSel->Fill(kNoCent);
+    return kFALSE;
+  }
 }
 //_____________________________________________________________________
 Bool_t AliForwardMCFlowTaskQC::GetVertex(const AliAODForwardMult* aodfm)
@@ -323,10 +343,8 @@ Bool_t AliForwardMCFlowTaskQC::GetVertex(const AliAODForwardMult* aodfm)
   // Returns true if vertex is determined
   //
   if (fUseMCVertex) {
-    AliAODMCHeader* header = 
-      static_cast<AliAODMCHeader*>(fAOD->FindListObject(AliAODMCHeader::StdBranchName()));
-    if (header) {
-      fVtx = header->GetVtxZ();
+    if (fAODMCHeader) {
+      fVtx = fAODMCHeader->GetVtxZ();
       if (fVtx < fVtxAxis->GetXmin() || fVtx > fVtxAxis->GetXmax()) {
         fHistEventSel->Fill(kInvVtx);
        return kFALSE;
@@ -352,26 +370,21 @@ Bool_t AliForwardMCFlowTaskQC::FillMCHist()
 
   //retreive MC particles from event
   TClonesArray* mcArray = 
-    static_cast<TClonesArray*>(fAOD->FindListObject(
-                               AliAODMCParticle::StdBranchName()));
+    static_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
   if(!mcArray){
     AliWarning("No MC array found in AOD. Try making it again.");
     return kFALSE;
   }
 
-  AliAODMCHeader* header = 
-    static_cast<AliAODMCHeader*>(fAOD->FindListObject(
-                                  AliAODMCHeader::StdBranchName()));
-  if (!header) 
-    AliWarning("No header file found.");
+  if (!fAODMCHeader) AliWarning("No MC header found.");
 
   Int_t ntracks = mcArray->GetEntriesFast();
 //  Double_t rp = -1, b = -1;
-  if (header) {
+  if (fAODMCHeader) {
 //    rp = header->GetReactionPlaneAngle();
 //    b = header->GetImpactParameter();
-    if (header->GetNCocktailHeaders() > 1) {
-      ntracks = header->GetCocktailHeader(0)->NProduced();
+    if (fAODMCHeader->GetNCocktailHeaders() > 1) {
+      ntracks = fAODMCHeader->GetCocktailHeader(0)->NProduced();
     }
   }
   
@@ -425,11 +438,8 @@ Double_t AliForwardMCFlowTaskQC::GetCentFromB() const
   // Get centrality from MC impact parameter.
   //
   Double_t cent = -1.;
-  AliAODMCHeader* header = 
-    static_cast<AliAODMCHeader*>(fAOD->FindListObject(AliAODMCHeader::
-                                                     StdBranchName()));
-  if (!header) return cent;
-  Double_t b = header->GetImpactParameter();
+  if (!fAODMCHeader) return cent;
+  Double_t b = fAODMCHeader->GetImpactParameter();
   cent = fImpactParToCent->Eval(b);
 
   return cent;
index 7e12151bd4f249d977cbd2d5f160ea848cba6f59..d79e82db65557d67bfa9b9a3845c794a49c350b0 100644 (file)
@@ -14,6 +14,7 @@
 #include "AliForwardFlowTaskQC.h"
 #include "AliForwardFlowWeights.h"
 class TGraph;
+class AliAODMCHeader;
 
 /**
  * Calculate the flow in the forward regions using the Q cumulants method
@@ -109,6 +110,16 @@ protected:
    * Finalize analysis
    */
   void Finalize();
+    /**
+   * Check AODevent object for trigger, vertex and centrality
+   * uses aod header if object is null
+   * returns true if event is OK
+   *
+   * @param aodfm AliAODForwardMult object
+   * 
+   * @return Bool_t 
+   */
+  virtual Bool_t CheckEvent(const AliAODForwardMult* aodfm);
   /**
    * Check trigger from AODForwardMult object
    * returns true if B trigger is present
@@ -154,6 +165,7 @@ protected:
   TList                 fBinsForwardTR;   //  List with FMDTR VertexBin objects
   TList                 fBinsCentralTR;   //  List with SPDTR VertexBin objects
   TList                 fBinsMC;          //  List with MC VertexBin objects
+  AliAODMCHeader*       fAODMCHeader;     //  MC header object
   TH2D                  fHistdNdedpMC;    //  d^2N/detadphi MC particles histogram
   TH2D*                 fHistFMDMCCorr;   //  Diagnostics for mult. corr. between FMD and MC
   TH2D*                 fHistSPDMCCorr;   //  Diagnostics for mult. corr. between SPD and MC
@@ -165,7 +177,7 @@ protected:
   Int_t                 fAddType;         //  Add flow type #
   Int_t                 fAddOrder;        //  Add flow order
 
-  ClassDef(AliForwardMCFlowTaskQC, 4); // FMD MC analysis task 
+  ClassDef(AliForwardMCFlowTaskQC, 5); // FMD MC analysis task 
 };
  
 #endif