X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSTrackSegmentMakerv1.h;h=e26e17a2be728a4f8e829cc7c512a279229a406b;hb=88cb7938ca21d4a80991d4e7aa564008c29340f7;hp=441e091730f848e19423fcf0ebc7719f89b0e2e1;hpb=6727be7ec8e9058096aae06e1edcc20bb98835a4;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSTrackSegmentMakerv1.h b/PHOS/AliPHOSTrackSegmentMakerv1.h index 441e091730f..e26e17a2be7 100644 --- a/PHOS/AliPHOSTrackSegmentMakerv1.h +++ b/PHOS/AliPHOSTrackSegmentMakerv1.h @@ -5,62 +5,90 @@ /* $Id$ */ -/////////////////////////////////////////////////// -// 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 PPSD clusters +// Unfolds the EMC cluster +// +//*-- Author: Dmitri Peressounko (RRC Ki & SUBATECH) // --- ROOT system --- // --- 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 AliPHOSRecPoint ; + class AliPHOSTrackSegmentMakerv1 : public AliPHOSTrackSegmentMaker { public: AliPHOSTrackSegmentMakerv1() ; + AliPHOSTrackSegmentMakerv1(const TString alirunFileNameFile, const TString eventFolderName = AliConfig::fgkDefaultEventFolderName); + AliPHOSTrackSegmentMakerv1(const AliPHOSTrackSegmentMakerv1 & tsm) { + // cpy ctor: no implementation yet + // requested by the Coding Convention + Fatal("cpy ctor", "not implemented") ; + } 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 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 char* GetRecPointsBranch (void)const{return (char*)fRecPointsBranchTitle.Data() ;} + // virtual char* GetTrackSegmentsBranch(void)const{return (char*)fTrackSegmentsBranchTitle.Data() ;} + virtual const Int_t GetTrackSegmentsInRun()const {return fTrackSegmentsInRun ;} + + virtual void Exec(Option_t * option) ; + void FillOneModule() ; // Finds range in which RecPoints belonging current PHOS module are + + void MakeLinks() const; //Evaluates distances(links) between EMC and PPSD + void MakePairs() ; //Finds pairs(triplets) with smallest link + virtual void Print() const ; + virtual void SetMaxEmcCPVDistance(Float_t r){ fRcpv = r ;} //Maximal distance (in PHOS plane) + //between EMCrp and CPVrp + virtual void SetMaxEmcTPCDistance(Float_t r){ fRtpc = r ;} //Maximal distance (in PHOS plane) + //between EMCrp and extrapolation of TPC track + // virtual void SetRecPointsBranch(const char * title) { fRecPointsBranchTitle = title ;} + // virtual void SetTrackSegmentsBranch(const char * title){ fTrackSegmentsBranchTitle = title ; } + 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 ; + } + void Unload() ; 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 + const TString BranchName() const ; + Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSRecPoint * Ppsd , Bool_t & TooFar )const ; // see R0 + void Init() ; + void InitParameters() ; + void PrintTrackSegments(Option_t *option) ; + virtual void WriteTrackSegments(Int_t event) ; + +private: + + Bool_t fDefaultInit; //! Says if the task was created by defaut ctor (only parameters are initialized) + + 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 + + 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 + Int_t fTrackSegmentsInRun ; //! Total number of track segments in one run - ClassDef( AliPHOSTrackSegmentMakerv1,1) // track segment maker implementation , version 1 + ClassDef( AliPHOSTrackSegmentMakerv1,3) // Implementation version 1 of algorithm class to make PHOS track segments -}; + }; #endif // AliPHOSTRACKSEGMENTMAKERV1_H