changed way of setting event info in AliCFManager and cuts in order to reduce
authorrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Nov 2009 18:06:05 +0000 (18:06 +0000)
committerrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Nov 2009 18:06:05 +0000 (18:06 +0000)
log messages

15 files changed:
CORRFW/AliCFAcceptanceCuts.cxx
CORRFW/AliCFAcceptanceCuts.h
CORRFW/AliCFCutBase.h
CORRFW/AliCFFrame.h
CORRFW/AliCFManager.cxx
CORRFW/AliCFManager.h
CORRFW/AliCFPairAcceptanceCuts.cxx
CORRFW/AliCFPairAcceptanceCuts.h
CORRFW/AliCFParticleGenCuts.cxx
CORRFW/AliCFParticleGenCuts.h
CORRFW/AliCFTrackIsPrimaryCuts.cxx
CORRFW/AliCFTrackIsPrimaryCuts.h
CORRFW/AliCFV0TopoCuts.h
CORRFW/test/AliCFSingleTrackTask.cxx
CORRFW/test/AliCFV0Task.cxx

index c23e447..c972366 100644 (file)
@@ -178,7 +178,7 @@ void AliCFAcceptanceCuts::SelectionBitMap(TObject* obj) {
 }
 
 
-void AliCFAcceptanceCuts::SetEvtInfo(TObject* mcInfo) {
+void AliCFAcceptanceCuts::SetMCEventInfo(const TObject* mcInfo) {
   //
   // Sets pointer to MC event information (AliMCEvent)
   //
index 1b7ed62..238d5a2 100644 (file)
@@ -44,7 +44,7 @@ class AliCFAcceptanceCuts : public AliCFCutBase
   virtual ~AliCFAcceptanceCuts() { };
   virtual Bool_t IsSelected(TObject* obj) ;
   virtual Bool_t IsSelected(TList*  /*list*/) {return kTRUE;}
-  virtual void   SetEvtInfo(TObject* mcInfo) ;
+  virtual void   SetMCEventInfo(const TObject* mcInfo) ;
   void SetMinNHitITS (Int_t nhits) {fMinNHitITS=nhits;} 
   void SetMinNHitTPC (Int_t nhits) {fMinNHitTPC=nhits;} 
   void SetMinNHitTRD (Int_t nhits) {fMinNHitTRD=nhits;} 
index 4733963..9789741 100644 (file)
@@ -33,7 +33,8 @@ class AliCFCutBase : public AliAnalysisCuts
   virtual ~AliCFCutBase() {;} //dtor
   virtual Bool_t IsQAOn() const {return fIsQAOn;}; //QA flag getter
   virtual void SetQAOn(TList* list) {fIsQAOn=kTRUE; AddQAHistograms(list);} //QA flag setter
-  virtual void SetEvtInfo(TObject *) {;}; //Pass pointer to event-level info
+  virtual void  SetMCEventInfo(const TObject *) {} //Pass pointer to MC event
+  virtual void SetRecEventInfo(const TObject *) {} //Pass pointer to reconstructed event
   
  protected:
   Bool_t fIsQAOn;//qa checking on/off
index 5ce2f6e..cacfe87 100644 (file)
@@ -31,6 +31,9 @@ class AliCFFrame : public TNamed
   virtual Int_t    * GetNBins()                                                  const = 0 ; // returns an array containing the bins for each variable
   virtual Float_t    GetBinCenter(Int_t ivar,Int_t ibin)                         const = 0 ; // the center of bin number ibin for variable ivar
   virtual Float_t    GetBinSize  (Int_t ivar,Int_t ibin)                         const = 0 ; // the   size of bin number ibin for variable ivar
+
+  //  virtual void       Clear() = 0 ; // clear all the cells
+  
   //virtual void       GetBinCenters(const Int_t *ibin, Float_t *binCenter)        const = 0 ; // 
   //virtual void       GetBinSizes  (const Int_t *ibin, Float_t *binSizes)         const = 0 ; //
 
index af9b750..045c573 100644 (file)
@@ -137,7 +137,7 @@ Bool_t AliCFManager::CheckEventCuts(Int_t isel, TObject *obj, const TString  &se
 }
 
 //_____________________________________________________________________________
-void  AliCFManager::SetEventInfo(TObject *obj) const {
+void  AliCFManager::SetMCEventInfo(const TObject *obj) const {
 
   //Particle level cuts
 
@@ -150,7 +150,7 @@ void  AliCFManager::SetEventInfo(TObject *obj) const {
       TObjArrayIter iter(fPartCutList[isel]);
       AliCFCutBase *cut = 0;
       while ( (cut = (AliCFCutBase*)iter.Next()) ) {
-       cut->SetEvtInfo(obj);
+       cut->SetMCEventInfo(obj);
       }    
     }
   }
@@ -166,7 +166,42 @@ void  AliCFManager::SetEventInfo(TObject *obj) const {
       TObjArrayIter iter(fEvtCutList[isel]);
       AliCFCutBase *cut = 0;
       while ( (cut = (AliCFCutBase*)iter.Next()) ) {
-       cut->SetEvtInfo(obj);
+       cut->SetMCEventInfo(obj);
+      }   
+    }
+  }
+}
+//_____________________________________________________________________________
+void  AliCFManager::SetRecEventInfo(const TObject *obj) const {
+
+  //Particle level cuts
+
+  if (!fPartCutList) {
+    AliWarning("No particle cut list found");
+  }
+  else {
+    for(Int_t isel=0;isel<fNStepPart; isel++){
+      if(!fPartCutList[isel])continue;  
+      TObjArrayIter iter(fPartCutList[isel]);
+      AliCFCutBase *cut = 0;
+      while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+       cut->SetRecEventInfo(obj);
+      }    
+    }
+  }
+  
+  //Event level cuts 
+  
+  if (!fEvtCutList) {
+    AliWarning("No event cut list found");
+  }
+  else {
+    for(Int_t isel=0;isel<fNStepEvt; isel++){
+      if(!fEvtCutList[isel])continue;  
+      TObjArrayIter iter(fEvtCutList[isel]);
+      AliCFCutBase *cut = 0;
+      while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+       cut->SetRecEventInfo(obj);
       }   
     }
   }
index 7e5a841..0527fc1 100644 (file)
@@ -105,7 +105,9 @@ class AliCFManager : public TNamed
 
   //Pass the pointer to obj to the selections (used to access MC/rec global
   //event info when requested
-  virtual void SetEventInfo(TObject *obj) const;
+  virtual void  SetMCEventInfo(const TObject *obj) const;
+  virtual void SetRecEventInfo(const TObject *obj) const;
+  virtual void SetEventInfo(TObject*) const {AliError("DEPRECATED !! -> use SetMCEventInfo of SetRecEventInfo instead");}
 
   //Cut Checkers: by default *all* the cuts of a given input list is checked 
   //(.and. of all cuts), but the user can select a subsample of cuts in the 
index 58bf433..cc6cc8c 100755 (executable)
@@ -146,19 +146,19 @@ void AliCFPairAcceptanceCuts::SelectionBitMap(TObject* obj)
 }
 
 //______________________________
-void AliCFPairAcceptanceCuts::SetEvtInfo(TObject* mcInfo) {
+void AliCFPairAcceptanceCuts::SetMCEventInfo(TObject* mcInfo) {
   //
   // Sets pointer to MC event information (AliMCEvent)
   //
 
   if (!mcInfo) {
-    Error("SetEvtInfo","Pointer to MC Event is null !");
+    Error("SetMCEventInfo","Pointer to MC Event is null !");
     return;
   }
   
   TString className(mcInfo->ClassName());
   if (className.CompareTo("AliMCEvent") != 0) {
-    Error("SetEvtInfo","argument must point to an AliMCEvent !");
+    Error("SetMCEventInfo","argument must point to an AliMCEvent !");
     return ;
   }
   
index eb30ca1..0a32fc5 100755 (executable)
@@ -42,7 +42,7 @@ class AliCFPairAcceptanceCuts : public AliCFCutBase
   virtual ~AliCFPairAcceptanceCuts() {delete fCutNeg; delete fCutPos; }
   Bool_t IsSelected(TObject* obj) ;
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
-  virtual void SetEvtInfo(TObject *mcInfo) ;
+  virtual void SetMCEventInfo(TObject *mcInfo) ;
   virtual AliCFAcceptanceCuts* GetNegCut() const {return fCutNeg;}
   virtual AliCFAcceptanceCuts* GetPosCut() const {return fCutPos;}
 
index 73bd9c1..8b6336b 100644 (file)
@@ -760,7 +760,7 @@ Bool_t AliCFParticleGenCuts::IsA(AliAODMCParticle *mcPart, Int_t pdg, Bool_t abs
   return kTRUE;
 }
 //______________________________
-void AliCFParticleGenCuts::SetEvtInfo(TObject* mcEvent) {
+void AliCFParticleGenCuts::SetMCEventInfo(const TObject* mcEvent) {
   //
   // Sets pointer to MC event information (AliMCEvent)
   //
@@ -775,7 +775,6 @@ void AliCFParticleGenCuts::SetEvtInfo(TObject* mcEvent) {
     AliError("argument must point to an AliMCEvent or an AliAODEvent !");
     return ;
   }
-  
-  if (fIsAODMC) fMCInfo = dynamic_cast<AliAODEvent*>(mcEvent) ;
-  else          fMCInfo = dynamic_cast<AliMCEvent*> (mcEvent) ;
+
+  fMCInfo = (AliVEvent*)mcEvent ;
 }
index 7b728aa..d19148f 100644 (file)
@@ -55,7 +55,7 @@ class AliCFParticleGenCuts : public AliCFCutBase
   virtual ~AliCFParticleGenCuts() { };
   virtual Bool_t IsSelected(TObject* obj) ;
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
-  virtual void   SetEvtInfo(TObject* mcEvent) ;
+  virtual void   SetMCEventInfo(const TObject* mcEvent) ;
   void    SetAODMC(Bool_t flag) {fIsAODMC=flag;}
 
   Bool_t IsPrimaryCharged(AliVParticle *mcPart);
index 784229d..841a98d 100644 (file)
@@ -360,7 +360,7 @@ void AliCFTrackIsPrimaryCuts::Copy(TObject &c) const
   TNamed::Copy(c);
 }
 //__________________________________________________________________________________
-void AliCFTrackIsPrimaryCuts::SetEvtInfo(TObject* esd) {
+void AliCFTrackIsPrimaryCuts::SetRecEventInfo(const TObject* esd) {
   //
   // Sets pointer to esd event information (AliESDEvent)
   //
index ac4b895..0255843 100644 (file)
@@ -97,7 +97,7 @@ class AliCFTrackIsPrimaryCuts : public AliCFCutBase
   // please use indices from the enumeration below
   void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins);
   void SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax);
-  virtual void SetEvtInfo(TObject* esd) ;
+  virtual void SetRecEventInfo(const TObject* esd) ;
 
   // indeces/counters for single selections
   enum { 
index b189039..72b944a 100755 (executable)
@@ -44,7 +44,7 @@ class AliCFV0TopoCuts : public AliCFCutBase
   virtual ~AliCFV0TopoCuts() { } ;
   Bool_t IsSelected(TObject* v0) ;
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
-  void   SetEvtInfo(TObject* evt) {fEvent = (AliVEvent*)evt;}
+  void   SetRecEventInfo(const TObject* evt) {fEvent = (AliVEvent*)evt;}
   void   SetMaxDcaDaughters (Double32_t dca)  {fMaxDcaDaughters = dca;}
   void   SetMinDcaNeg       (Double32_t dca)  {fMinDcaNeg = dca;}
   void   SetMinDcaPos       (Double32_t dca)  {fMinDcaPos = dca;}
index 5bcff8c..7d1f289 100644 (file)
@@ -138,17 +138,21 @@ void AliCFSingleTrackTask::UserExec(Option_t *)
     return;
   }
 
-  if (!fMCEvent) Error("UserExec","NO MC INFO FOUND");
+  if (!fMCEvent) {
+    Error("UserExec","NO MC INFO FOUND");
+    return ;
+  }
   
-  //pass the MC evt handler to the cuts that need it 
-  fCFManager->SetEventInfo(fMCEvent);
+  //pass the evt info to the cuts that need it 
+  fCFManager->SetMCEventInfo (fMCEvent);
+  fCFManager->SetRecEventInfo(fEvent);
 
   // MC-event selection
   Double_t containerInput[2] ;
         
   //loop on the MC event
   for (Int_t ipart=0; ipart<fMCEvent->GetNumberOfTracks(); ipart++) { 
-    AliMCParticle *mcPart  = fMCEvent->GetTrack(ipart);
+    AliMCParticle *mcPart  = (AliMCParticle*)fMCEvent->GetTrack(ipart);
 
     //check the MC-level cuts
     if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue;
@@ -190,7 +194,7 @@ void AliCFSingleTrackTask::UserExec(Option_t *)
     Int_t label = track->GetLabel();
 
     if (label<0) continue;
-    AliMCParticle *mcPart  = fMCEvent->GetTrack(label);
+    AliMCParticle *mcPart  = (AliMCParticle*)fMCEvent->GetTrack(label);
     
     // check if this track was part of the signal
     if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue; 
index 8653fd2..d1137fe 100644 (file)
@@ -45,6 +45,7 @@
 #include "TChain.h"
 #include "AliCFParticleGenCuts.h"
 #include "AliAODv0.h"
+#include "TDatabasePDG.h"
 
 //__________________________________________________________________________
 AliCFV0Task::AliCFV0Task() :
@@ -131,8 +132,13 @@ void AliCFV0Task::UserExec(Option_t *)
     return;
   }
 
-  if (!fMCEvent) Error("UserExec","NO MC INFO FOUND!");
-  fCFManager->SetEventInfo(fMCEvent);
+  if (!fMCEvent) {
+    Error("UserExec","NO MC INFO FOUND!");
+    return;
+  }
+
+  fCFManager->SetMCEventInfo (fMCEvent);
+  fCFManager->SetRecEventInfo(fInputEvent);
 
   Bool_t isESDEvent = strcmp(fInputEvent->ClassName(),"AliESDEvent") == 0 ? kTRUE : kFALSE ;
   Bool_t isAODEvent = strcmp(fInputEvent->ClassName(),"AliAODEvent") == 0 ? kTRUE : kFALSE ;
@@ -147,7 +153,7 @@ void AliCFV0Task::UserExec(Option_t *)
   //loop on the MC event
   Info("UserExec","Looping on MC event");
   for (Int_t ipart=0; ipart<fMCEvent->GetNumberOfTracks(); ipart++) { 
-    AliMCParticle *mcPart  = fMCEvent->GetTrack(ipart);
+    AliMCParticle *mcPart  = (AliMCParticle*)fMCEvent->GetTrack(ipart);
 
     //check the MC-level cuts
     if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue;
@@ -166,14 +172,6 @@ void AliCFV0Task::UserExec(Option_t *)
   //Now go to rec level
   Info("UserExec","Looping on %s",fInputEvent->ClassName());
  
-  //SET THE ESD AS EVENT INFO IN RECONSTRUCTION CUTS
-  TObjArray* fCutsReco = fCFManager->GetParticleCutsList(AliCFManager::kPartRecCuts);
-  TObjArrayIter iter1(fCutsReco);
-  AliCFCutBase *cut = 0;
-  while ( (cut = (AliCFCutBase*)iter1.Next()) ) {
-    cut->SetEvtInfo(fInputEvent);
-  }
-
   if (isESDEvent && fRebuildV0s) RebuildV0s(fESD) ;
 
   Info("UserExec","There are %d V0s in event",fInputEvent->GetNumberOfV0s());
@@ -208,7 +206,7 @@ void AliCFV0Task::UserExec(Option_t *)
     if (!fCFManager->CheckParticleCuts(AliCFManager::kPartRecCuts,pair)) continue;
     
     //check if associated MC v0 passes the cuts
-    AliMCParticle* mcV0 = fMCEvent->GetTrack(labMCV0);
+    AliMCParticle* mcV0 = (AliMCParticle*)fMCEvent->GetTrack(labMCV0);
     if (!mcV0) continue;
 
     if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcV0)) continue;