Possibility to reconstruct selected events via SetEventRange()
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 Jan 2004 17:53:25 +0000 (17:53 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 Jan 2004 17:53:25 +0000 (17:53 +0000)
PHOS/AliPHOSClusterizer.h
PHOS/AliPHOSClusterizerv1.cxx
PHOS/AliPHOSClusterizerv1.h
PHOS/AliPHOSPID.h
PHOS/AliPHOSPIDv1.cxx
PHOS/AliPHOSPIDv1.h
PHOS/AliPHOSTrackSegmentMaker.h
PHOS/AliPHOSTrackSegmentMakerv1.cxx
PHOS/AliPHOSTrackSegmentMakerv1.h

index 6f41f15..b768ee0 100644 (file)
@@ -48,7 +48,8 @@ public:
   virtual void SetCpvLocalMaxCut(Float_t)         = 0;
   virtual void SetCpvLogWeight(Float_t)           = 0;
   virtual void SetUnfolding(Bool_t)               = 0;
-  void   SetEventFolderName(TString name) { fEventFolderName = name ; }
+  void SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }
+  void SetEventFolderName(TString name) { fEventFolderName = name ; }
 
   AliPHOSClusterizer & operator = (const AliPHOSClusterizer & /*rvalue*/)  {return *this ;} 
  
@@ -56,9 +57,10 @@ public:
 
 protected:
   TString fEventFolderName ;  // event folder name
+  Int_t   fFirstEvent;        // first event to process
+  Int_t   fLastEvent;         // last  event to process
 
-
-  ClassDef(AliPHOSClusterizer,3)  // Clusterization algorithm class 
+  ClassDef(AliPHOSClusterizer,4)  // Clusterization algorithm class 
 
 } ;
 
index 44b067e..69e0b5c 100644 (file)
@@ -114,23 +114,28 @@ Float_t  AliPHOSClusterizerv1::Calibrate(Int_t amp, Int_t absId) const
 }
 
 //____________________________________________________________________________
-void AliPHOSClusterizerv1::Exec(Option_t * option)
+void AliPHOSClusterizerv1::Exec(Option_t *option)
 {
-  // Steering method
+  // Steering method to perform clusterization for events
+  // in the range from fFirstEvent to fLastEvent.
+  // This range is optionally set by SetEventRange().
+  // if fLastEvent=-1 (by default), then process events until the end.
 
   if(strstr(option,"tim"))
     gBenchmark->Start("PHOSClusterizer"); 
   
-  if(strstr(option,"print"))
+  if(strstr(option,"print")) {
     Print() ; 
+    return ;
+  }
 
   AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
   
-  Int_t nevents = gime->MaxEvent() ;
-  Int_t ievent ;
+  if (fLastEvent == -1) fLastEvent = gime->MaxEvent() - 1 ;
+  else fLastEvent = TMath::Min(fLastEvent,gime->MaxEvent());
+  Int_t nEvents   = fLastEvent - fFirstEvent + 1;
   
-  for(ievent = 0; ievent < nevents; ievent++)
-   {
+  for (Int_t ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
     gime->Event(ievent, "D");
 
     GetCalibrationParameters() ;
@@ -158,7 +163,7 @@ void AliPHOSClusterizerv1::Exec(Option_t * option)
     gBenchmark->Stop("PHOSClusterizer");
     Info("Exec", "  took %f seconds for Clusterizing %f seconds per event \n",
         gBenchmark->GetCpuTime("PHOSClusterizer"), 
-        gBenchmark->GetCpuTime("PHOSClusterizer")/nevents ) ; 
+        gBenchmark->GetCpuTime("PHOSClusterizer")/nEvents ) ; 
   } 
 }
 
@@ -316,6 +321,7 @@ void AliPHOSClusterizerv1::InitParameters()
     
   fRecPointsInRun          = 0 ;
 
+  SetEventRange(0,-1) ;
 }
 
 //____________________________________________________________________________
index 893e3d4..48281f2 100644 (file)
@@ -58,7 +58,7 @@ public:
   virtual const char *  GetRecPointsBranch() const{ return GetName() ;}
   virtual const Int_t GetRecPointsInRun() const   {return fRecPointsInRun ;} 
 
-  void    Exec(Option_t *option);                // Does the job
+  virtual void    Exec(Option_t *option);   // Does the job
 
   void Print()const ;
 
index 71826fd..d12878f 100644 (file)
@@ -36,20 +36,22 @@ class AliPHOSPID : public TTask {
   AliPHOSPID(const AliPHOSPID & pid) : TTask(pid) {;} 
   virtual ~AliPHOSPID() ; // dtor
 
-  virtual void Exec(Option_t *) = 0;
   virtual const Int_t GetRecParticlesInRun()  const { Warning("GetRecParticlesInRun", "not defined" ) ; return 0 ;} 
   virtual void Print() const { Warning("Print", "not defined" ) ;}
-  void   SetEventFolderName(TString name) { fEventFolderName = name ; }
+  void SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }
+  void SetEventFolderName(TString name) { fEventFolderName = name ; }
   virtual const char * Version() const { Warning("Version", "not defined" ) ; return 0 ; }  
   virtual void WriteRecParticles() = 0;
 
 protected:
   TString fEventFolderName ;  // event folder name
+  Int_t   fFirstEvent;        // first event to process
+  Int_t   fLastEvent;         // last  event to process
 
 private: 
   virtual void Init() { Warning("Init", "not defined" ) ; } 
 
-  ClassDef(AliPHOSPID,3)  // Particle Identifier algorithm (base class)
+  ClassDef(AliPHOSPID,4)  // Particle Identifier algorithm (base class)
 
 } ;
 
index f571de5..a6974d0 100644 (file)
@@ -173,13 +173,16 @@ void AliPHOSPIDv1::InitParameters()
   fNEvent            = 0 ;            
   fRecParticlesInRun = 0 ;
   SetParameters() ; // fill the parameters matrix from parameters file
+  SetEventRange(0,-1) ;
 }
 
 //________________________________________________________________________
-void  AliPHOSPIDv1::Exec(Option_t * option) 
+void  AliPHOSPIDv1::Exec(Option_t *option)
 {
-  //Steering method
-  
+  // Steering method to perform particle reconstruction and identification
+  // for the event range from fFirstEvent to fLastEvent.
+  // This range is optionally set by SetEventRange().
+  // if fLastEvent=-1 (by default), then process events until the end.
 
   if(strstr(option,"tim"))
     gBenchmark->Start("PHOSPID");
@@ -192,11 +195,11 @@ void  AliPHOSPIDv1::Exec(Option_t * option)
 
   AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
  
-  Int_t nevents = gime->MaxEvent() ;       
-  Int_t ievent ;
-
+  if (fLastEvent == -1) fLastEvent = gime->MaxEvent() - 1 ;
+  else fLastEvent = TMath::Min(fLastEvent,gime->MaxEvent());
+  Int_t nEvents   = fLastEvent - fFirstEvent + 1;
 
-  for(ievent = 0; ievent < nevents; ievent++){
+  for (Int_t ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
     gime->Event(ievent,"TR") ;
     if(gime->TrackSegments() && //Skip events, where no track segments made
        gime->TrackSegments()->GetEntriesFast()) {
@@ -212,7 +215,7 @@ void  AliPHOSPIDv1::Exec(Option_t * option)
     gBenchmark->Stop("PHOSPID");
     Info("Exec", "took %f seconds for PID %f seconds per event", 
         gBenchmark->GetCpuTime("PHOSPID"),  
-        gBenchmark->GetCpuTime("PHOSPID")/nevents) ;
+        gBenchmark->GetCpuTime("PHOSPID")/nEvents) ;
   }
  
   Unload();
index c3356b6..6fa64d6 100644 (file)
@@ -35,7 +35,7 @@ public:
   
   virtual ~AliPHOSPIDv1() ; // dtor
   
-  virtual void Exec(Option_t * option) ;
+  virtual void Exec(Option_t *option);  // Does the job
 
   //Get file name that contain the PCA
   const TString GetFileNamePrincipal(TString particle) const;
index 02de07a..0b1ab5c 100644 (file)
@@ -35,19 +35,20 @@ public:
   AliPHOSTrackSegmentMaker(const AliPHOSTrackSegmentMaker & tsmaker) : TTask(tsmaker) { ; } 
   virtual ~ AliPHOSTrackSegmentMaker() ;
 
-  virtual void    Exec(Option_t *) = 0;
-
   virtual const Int_t GetTrackSegmentsInRun()  const {Warning("GetTrackSegmentsInRun", "Not Defined" ) ; return 0 ; } 
 
   virtual void    Print()const {Warning("Print", "Not Defined" ) ; }
-  void   SetEventFolderName(TString name) { fEventFolderName = name ; }
+  void SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }
+  void SetEventFolderName(TString name) { fEventFolderName = name ; }
 
   virtual void WriteTrackSegments() = 0;
   
 protected:
   TString fEventFolderName ;  // event folder name
+  Int_t   fFirstEvent;        // first event to process
+  Int_t   fLastEvent;         // last  event to process
 
-  ClassDef( AliPHOSTrackSegmentMaker,3)    // Algorithm class to make PHOS track segments (Base Class)
+  ClassDef( AliPHOSTrackSegmentMaker,4)  // Algorithm class to make PHOS track segments (Base Class)
 };
 
 #endif // ALIPHOSTRACKSEGMENTMAKER_H
index fec7a00..d8dc263 100644 (file)
@@ -182,6 +182,7 @@ void  AliPHOSTrackSegmentMakerv1::InitParameters()
   fCpvLast   = 0 ;   
   fLinkUpArray = 0 ;
   fTrackSegmentsInRun       = 0 ; 
+  SetEventRange(0,-1) ;
 }
 
 
@@ -299,9 +300,12 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs()
 }
 
 //____________________________________________________________________________
-void  AliPHOSTrackSegmentMakerv1::Exec(Option_t * option)
+void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
 {
-  // STEERing method
+  // Steering method to perform track segment construction for events
+  // in the range from fFirstEvent to fLastEvent.
+  // This range is optionally set by SetEventRange().
+  // if fLastEvent=-1 (by default), then process events until the end.
   
   if(strstr(option,"tim"))
     gBenchmark->Start("PHOSTSMaker");
@@ -315,10 +319,11 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t * option)
   
   const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
 
-  Int_t nevents = gime->MaxEvent() ;    
-  Int_t ievent ;
+  if (fLastEvent == -1) fLastEvent = gime->MaxEvent() - 1 ;
+  else fLastEvent = TMath::Min(fLastEvent,gime->MaxEvent());
+  Int_t nEvents   = fLastEvent - fFirstEvent + 1;
 
-  for(ievent = 0; ievent < nevents; ievent++) {
+  for (Int_t ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
     gime->Event(ievent,"R") ;
     //Make some initializations 
     fNTrackSegments = 0 ;
@@ -351,7 +356,7 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t * option)
     gBenchmark->Stop("PHOSTSMaker");
     Info("Exec", "took %f seconds for making TS %f seconds per event", 
           gBenchmark->GetCpuTime("PHOSTSMaker"), 
-          gBenchmark->GetCpuTime("PHOSTSMaker")/nevents) ;
+          gBenchmark->GetCpuTime("PHOSTSMaker")/nEvents) ;
    }
   Unload();
 }
index 3a14fb8..7e93110 100644 (file)
@@ -40,7 +40,7 @@ public:
   //  virtual char*  GetTrackSegmentsBranch(void)const{return (char*)fTrackSegmentsBranchTitle.Data() ;}
   virtual const Int_t GetTrackSegmentsInRun()const {return fTrackSegmentsInRun ;}  
 
-  virtual void   Exec(Option_t * option) ;
+  virtual void   Exec(Option_t *option); // Does the job
           void   FillOneModule() ;       // Finds range in which RecPoints belonging current PHOS module are
 
           void   MakeLinks() const;      //Evaluates distances(links) between EMC and PPSD