X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSTrackSegmentMakerv1.h;h=ac5b520c153a35db84230c72a6f341183c09c176;hb=99be538ebec999a933ca845c4ce13a2d5ee707eb;hp=96031c879ba8a653ce59c3e5fbdb2f4b138abfb5;hpb=d912c4d7dcc171697f3e1e0693359a459233e7fa;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSTrackSegmentMakerv1.h b/PHOS/AliPHOSTrackSegmentMakerv1.h index 96031c879ba..ac5b520c153 100644 --- a/PHOS/AliPHOSTrackSegmentMakerv1.h +++ b/PHOS/AliPHOSTrackSegmentMakerv1.h @@ -4,64 +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. + * + */ -/////////////////////////////////////////////////// -// Track Segment Maker class for PHOS // -// Version SUBATECH // -// Author Dmitri Peressounko RRC Ki // -// comment: finds pairs of clusters EMC+PPSD // -// performs unfolding. // -/////////////////////////////////////////////////// +//_________________________________________________________________________ +// Implementation version 1 of algorithm class to construct PHOS track segments +// 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(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(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 - 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 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 ; } + 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 + Fatal("operator =", "not implemented") ; + return *this ; + } + + virtual TClonesArray * GetTrackSegments() const { return fTrackSegments; } private: - Float_t fDelta ; // parameter used for sorting - TMinuit * fMinuit ; // Minuit object needed by cluster unfolding - Float_t fR0 ; - 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) // track segment maker implementation , version 1 + ClassDef( AliPHOSTrackSegmentMakerv1,4) // Implementation version 1 of algorithm class to make PHOS track segments -}; + }; #endif // AliPHOSTRACKSEGMENTMAKERV1_H