The Unfold method is now optionnal via Set(Unset)UnFoldFlag()
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 Feb 2000 10:35:10 +0000 (10:35 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 Feb 2000 10:35:10 +0000 (10:35 +0000)
PHOS/AliPHOSAnalyze.cxx
PHOS/AliPHOSTrackSegmentMaker.h
PHOS/AliPHOSTrackSegmentMakerv1.cxx
PHOS/AliPHOSTrackSegmentMakerv1.h

index 3f2d8ffad1d7519d2722535ad520f1fc29e22d02..557a371e2950e3824d2ef6fbc1a175a2e9f69d5f 100644 (file)
@@ -162,7 +162,8 @@ void AliPHOSAnalyze::AnalyzeOneEvent(Int_t evt)
          fClu->SetLocalMaxCut(0.03) ;
          fClu->SetCalibrationParameters(0., 0.00000001) ;  
          //========== Creates the track segment maker
-         fTrs = new AliPHOSTrackSegmentMakerv1()  ; 
+         fTrs = new AliPHOSTrackSegmentMakerv1()  ;
+         fTrs->SetUnfoldFlag() ; 
          //========== Creates the particle identifier
          fPID = new AliPHOSPIDv1() ;
          fPID->SetShowerProfileCuts(0.5, 1.5, 0.5, 1.5 ) ; 
index ed855ea2845e3ad0007092fed4c9c477b17b725d..60aa76ed4bf9b16cc50501b84d41d065951ec52a 100644 (file)
@@ -37,6 +37,8 @@ public:
   virtual void MakeTrackSegments(DigitsList * DL, RecPointsList * emcl, RecPointsList * ppsdl, TrackSegmentsList * trsl ) = 0  ; 
                                          // does the job
   virtual void SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;}
+  virtual void SetUnfoldFlag() ;
+  virtual void UnsetUnfoldFlag() ; 
 
 private:
 
index 13a665af1364e0d10212731dc24ac484a83b7a40..00e65a955029638bc1a70ce7c204035f41c81d1c 100644 (file)
@@ -51,7 +51,8 @@ ClassImp( AliPHOSTrackSegmentMakerv1)
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
   //clusters are sorted in "rows" and "columns" of width geom->GetCrystalSize(0),
   fDelta = fR0 + geom->GetCrystalSize(0) ;
-  fMinuit = new TMinuit(100) ; 
+  fMinuit = new TMinuit(100) ;
+  fUnfoldFlag = kTRUE ; 
 }
 
 //____________________________________________________________________________
@@ -161,9 +162,9 @@ void  AliPHOSTrackSegmentMakerv1::FillOneModule(DigitsList * Dl, RecPointsList *
     Float_t maxAtEnergy[nMultipl] ;
     Int_t nMax = emcRecPoint->GetNumberOfLocalMax(maxAt, maxAtEnergy) ;
     
-    if(nMax <= 1)     // if cluster is very flat (no pronounced maximum) then nMax = 0 
+    if(nMax <= 1 )     // if cluster is very flat (no pronounced maximum) then nMax = 0 
       emcOut->Add(emcRecPoint) ;
-    else {
+    else if (fUnfoldFlag) {
       UnfoldClusters(Dl, emcIn, emcRecPoint, nMax, maxAt, maxAtEnergy, emcOut) ;
       emcIn->Remove(emcRecPoint); 
       emcIn->Compress() ;
index c3b84aa7b5f037f8dc287f1f28390c01f2d6a692..441e091730f848e19423fcf0ebc7719f89b0e2e1 100644 (file)
@@ -35,34 +35,29 @@ public:
   
   Bool_t  FindFit(AliPHOSEmcRecPoint * emcRP, int * MaxAt, Float_t * maxAtEnergy, 
                  Int_t NPar, Float_t * FitParametres) ; //Used in UnfoldClusters, calls TMinuit
-
   void    FillOneModule(DigitsList * Dl, RecPointsList * emcIn, TObjArray * emcOut, RecPointsList * ppsdIn, 
                        TObjArray * ppsdOutUp, TObjArray * ppsdOutLow, Int_t &PHOSModule, Int_t & emcStopedAt, 
                        Int_t & ppsdStopedAt) ; // Unfolds clusters and fills temporary arrais   
-
   Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSPpsdRecPoint * Ppsd , Bool_t & TooFar ) ; // see R0
 
   void    MakeLinks(TObjArray * EmcRecPoints, TObjArray * PpsdRecPointsUp, TObjArray * PpsdRecPointsLow, 
                    TClonesArray * LinkLowArray, TClonesArray *LinkUpArray) ; //Evaluates distances(links) between EMC and PPSD
-
   void    MakePairs(TObjArray * EmcRecPoints, TObjArray * PpsdRecPointsUp, TObjArray * PpsdRecPointsLow, 
                    TClonesArray * LinkLowArray, TClonesArray * LinkUpArray, TrackSegmentsList * trsl) ; 
                     //Finds pairs(triplets) with smallest link
-
   void    MakeTrackSegments(DigitsList * DL, RecPointsList * emcl, RecPointsList * ppsdl, TrackSegmentsList * trsl ) ; // does the job
-
-  void    SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;} //Radius within which we look for ppsd cluster
-
+  virtual void    SetUnfoldFlag() { fUnfoldFlag = kTRUE ; } ; 
   static Double_t ShowerShape(Double_t r) ; // Shape of shower used in unfolding; class member function (not object member function)
-
   void    UnfoldClusters(DigitsList * DL, RecPointsList * emcIn, AliPHOSEmcRecPoint * iniEmc, Int_t Nmax, 
                         int * maxAt, Float_t * maxAtEnergy, TObjArray * emclist) ; //Unfolds overlaping clusters using TMinuit package
+  virtual void    UnSetUnfoldFlag() { fUnfoldFlag = kFALSE ; } ; 
 
 private:
 
   Float_t fDelta ;    // parameter used for sorting
   Float_t fR0 ;       // Maximal distance between EMC and PPSD clusters of one Track Segment in module plane
   TMinuit * fMinuit ; // Minuit object needed by cluster unfolding
+  Bool_t fUnfoldFlag ;// Directive to unfold or not the clusters in case of multiple maxima
 
   ClassDef( AliPHOSTrackSegmentMakerv1,1)  // track segment maker implementation , version 1