]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
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 c23e4470354be68ec1a8ae09c6687fde57ab4488..c9723667659f12e49e2c9ab5ef2e0fb3d08068bd 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 1b7ed6249b0883a6c6b335d90c368c6351a754a9..238d5a25f7eb7ff05d51b8fc5ab3b0e7b9532027 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 47339636a7d96bb4c7ad6693736373fd3d620480..9789741a4d82f42012f68b7cf605a85452708f3e 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 5ce2f6eae5c3a14e3acf61e362afff9a9b832fc4..cacfe87a4d8edf349c104393d8090854d311b250 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 af9b7504b3f9cfe0ebae224f821fc95f508bd97c..045c57317b90241a3a42e85342191a265ab8e44d 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 7e5a8411adf4b8828e97ec19fd1a1f8c2eefc5f5..0527fc112356c812b0ad14463ae6f76eea669da9 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 58bf433600a5310eba963ba04e08c7a0b4748104..cc6cc8c85e0608ecaa9961c9ec1021d65fe33bf8 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 eb30ca11cb2192d8045ec9df335ef20e5e292c77..0a32fc53d88ad2e831d1d4f352c489885aa9d1cc 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 73bd9c16e303e0e31267ed745695d347183565f8..8b6336bc2121b6cf3ad84bb2bc83fea0226e37b3 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 7b728aaf8991fe7c886e66ebcbd1121848030f6f..d19148f1e882eb74b84856eafbe56772a43a7bb2 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 784229ddd334be49538a02c4192fe93ae5f853e8..841a98dde4cd1e32c873c02014d57e19b37c38b0 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 ac4b8952c6d21266562bb3d9516ff06fe01bd28e..0255843ca3021603458a03cc25b6a82bbaef528b 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 b189039c54b3e6886b7b3aa80a6d99e26d432b6d..72b944a22698a60f20ec60f8363f31b72a03dbd6 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 5bcff8c25a97842420cfeb44b8e41882e0e49bc9..7d1f289fd1ff801733c72a41f226bade6e69b81a 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 8653fd2342cc93f7ae9c835945d83ef24eef84d3..d1137fed7521d775b43d6e33b97f350a3aac62d2 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;