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 ) ;
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 ;
}
//____________________________________________________________________________
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() ;
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