X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=PHOS%2FAliPHOSTrackSegmentMakerv1.h;h=ac5b520c153a35db84230c72a6f341183c09c176;hp=681bad716b5652031f2f3e9387d2375bb02791b8;hb=1d2a91c902e1cde1856e52d9c653bfc9c7cd7777;hpb=2f04ed65d5949adfed4f99b4cc36732eeca851d9 diff --git a/PHOS/AliPHOSTrackSegmentMakerv1.h b/PHOS/AliPHOSTrackSegmentMakerv1.h index 681bad716b5..ac5b520c153 100644 --- a/PHOS/AliPHOSTrackSegmentMakerv1.h +++ b/PHOS/AliPHOSTrackSegmentMakerv1.h @@ -4,95 +4,111 @@ * See cxx source for full Copyright notice */ /* $Id$ */ +/* History of cvs commits: + * + * $Log$ + * Revision 1.51 2007/03/28 19:18:15 kharlov + * RecPoints recalculation in TSM removed + * + * Revision 1.50 2007/03/06 06:54:48 kharlov + * DP:Calculation of cluster properties dep. on vertex added + * + * Revision 1.49 2007/02/01 13:59:11 hristov + * Forward declaration + * + * Revision 1.48 2006/08/28 10:01:56 kharlov + * Effective C++ warnings fixed (Timur Pocheptsov) + * + * Revision 1.47 2005/11/17 12:35:27 hristov + * Use references instead of objects. Avoid to create objects when they are not really needed + * + * Revision 1.46 2005/05/28 14:19:05 schutz + * Compilation warnings fixed by T.P. + * + */ //_________________________________________________________________________ // Implementation version 1 of algorithm class to construct PHOS track segments -// Associates EMC and PPSD clusters +// Associates EMC and CPV lusters // Unfolds the EMC cluster // //*-- Author: Dmitri Peressounko (RRC Ki & SUBATECH) // --- ROOT system --- +#include // --- Standard library --- // --- AliRoot header files --- - -#include "TObjArray.h" -#include "AliPHOSClusterizer.h" -#include "AliPHOSEmcRecPoint.h" -#include "AliPHOSPpsdRecPoint.h" #include "AliPHOSTrackSegmentMaker.h" -#include "TMinuit.h" + +class AliPHOSEmcRecPoint ; +class AliPHOSCpvRecPoint ; +class TClonesArray; class AliPHOSTrackSegmentMakerv1 : public AliPHOSTrackSegmentMaker { public: AliPHOSTrackSegmentMakerv1() ; - AliPHOSTrackSegmentMakerv1(const AliPHOSTrackSegmentMakerv1 & tsm) { - // cpy ctor: no implementation yet - // requested by the Coding Convention - assert(0==1) ; - } - + AliPHOSTrackSegmentMakerv1(AliPHOSGeometry *geom); + AliPHOSTrackSegmentMakerv1(const AliPHOSTrackSegmentMakerv1 & tsm); + virtual ~ AliPHOSTrackSegmentMakerv1() ; // dtor - Bool_t FindFit(AliPHOSEmcRecPoint * emcRP, int * MaxAt, Float_t * maxAtEnergy, - Int_t NPar, Float_t * FitParametres) ; //Used in UnfoldClusters, calls TMinuit - void FillOneModule(AliPHOSRecPoint::RecPointsList * emcIn, - TArrayI * emcOut, - AliPHOSRecPoint::RecPointsList * ppsdIn, - TArrayI * ppsdOutUp, - TArrayI * ppsdOutLow, - Int_t &PHOSModule, - Int_t & emcStopedAt, - Int_t & ppsdStopedAt) ; // Fills temporary arrais with clusters from one module - Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSPpsdRecPoint * Ppsd , Bool_t & TooFar ) ; // see R0 - - void MakeLinks(TArrayI * EmcRecPoints, TArrayI * PpsdRecPointsUp, TArrayI * PpsdRecPointsLow, - TClonesArray * LinkLowArray, TClonesArray *LinkUpArray) ; //Evaluates distances(links) between EMC and PPSD - void MakePairs(TArrayI * EmcRecPoints, - TArrayI * PpsdRecPointsUp, - TArrayI * PpsdRecPointsLow, - TClonesArray * LinkLowArray, - TClonesArray * LinkUpArray, - AliPHOSTrackSegment::TrackSegmentsList * trsl) ; //Finds pairs(triplets) with smallest link - void MakeTrackSegments(DigitsList * DL, - AliPHOSRecPoint::RecPointsList * emcl, - AliPHOSRecPoint::RecPointsList * ppsdl, - AliPHOSTrackSegment::TrackSegmentsList * trsl ) ; // does the job - virtual void MakeTrackSegmentsCPV(DigitsList * DL, - AliPHOSRecPoint::RecPointsList * emcl, - AliPHOSRecPoint::RecPointsList * ppsdl ); // just unfold EMC and CPV clusters - virtual void SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;} - 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 UnfoldAll(DigitsList * Dl, AliPHOSRecPoint::RecPointsList * emcIn) ; - // Unfolds and sorts all EMC clusters - void UnfoldClusters(DigitsList * DL, - AliPHOSRecPoint::RecPointsList * emcIn, - AliPHOSEmcRecPoint * iniEmc, - Int_t Nmax, - int * maxAt, - Float_t * maxAtEnergy ) ; //Unfolds overlaping clusters using TMinuit package - virtual void UnsetUnfoldFlag() { fUnfoldFlag = kFALSE ; } + virtual void Clusters2TrackSegments(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 CPV + void MakePairs() ; //Finds pairs(triplets) with smallest link + virtual void Print(const Option_t * = "") const ; + //Switch to "on flyght" mode, without writing to TreeR and file + void SetWriting(Bool_t toWrite = kFALSE){fWrite = toWrite;} + virtual void SetMaxEmcCPVDistance(Float_t r){ fRcpv = r ;} //Maximal distance (in PHOS plane) + //between EMCrp and CPVrp + virtual void SetMaxCPVTPCDistance(Float_t r){ fRtpc = r ;} //Maximal distance + //between EMCrp and extrapolation of TPC track + virtual const char * Version() const { return "tsm-v1" ; } AliPHOSTrackSegmentMakerv1 & operator = (const AliPHOSTrackSegmentMakerv1 & ) { - // assignement operator requested by coding convention - // but not needed - assert(0==1) ; + // assignement operator requested by coding convention but not needed + Fatal("operator =", "not implemented") ; return *this ; } + virtual TClonesArray * GetTrackSegments() const { return fTrackSegments; } + private: - Float_t fDelta ; // parameter used for sorting - Float_t fR0 ; // Maximum distance between a EMC RecPoint and a PPSD RecPoint - Bool_t fUnfoldFlag ; // Directive to unfold or not the clusters in case of multiple maxima + void GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSCpvRecPoint * Cpv, + Int_t & track, Float_t &dx, Float_t &dz ) const ; // see R0 + void Init() ; + void InitParameters() ; + void PrintTrackSegments(Option_t *option) ; + +private: + + Bool_t fDefaultInit; //! Says if the task was created by defaut ctor (only parameters are initialized) + Bool_t fWrite ; // Write Tracks to TreeT + + Int_t fNTrackSegments ; // number of track segments found + + Float_t fRcpv ; // Maximum distance between a EMC RecPoint and a CPV RecPoint + Float_t fRtpc ; // Maximum distance between a EMC RecPoint and extrapolation of a TPC track + + TVector3 fVtx ; //! Vertex in current position + + TClonesArray * fLinkUpArray ; //! + Int_t fEmcFirst; //! Index of first EMC RecPoint belonging to currect PHOS module + Int_t fEmcLast ; //! + Int_t fCpvFirst; //! Cpv upper layer + Int_t fCpvLast; //! + Int_t fModule ; //! number of module being processed + + TClonesArray * fTrackSegments; // Array with found track-segments - ClassDef( AliPHOSTrackSegmentMakerv1,1) // Implementation version 1 of algorithm class to make PHOS track segments + ClassDef( AliPHOSTrackSegmentMakerv1,4) // Implementation version 1 of algorithm class to make PHOS track segments -}; + }; #endif // AliPHOSTRACKSEGMENTMAKERV1_H