d15a28e7 |
1 | #ifndef ALIPHOSSUBTRACKERV1_H |
2 | #define ALIPHOSSUBTRACKERV1_H |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ |
5 | |
6 | /////////////////////////////////////////////////// |
7 | // Track Segment Maker class for PHOS // |
8 | // Version SUBATECH // |
9 | // Author Dmitri Peressounko RRC Ki // |
10 | // comment: finds pairs of clusters EMC+PPSD // |
11 | // performs unfolding. // |
12 | /////////////////////////////////////////////////// |
13 | |
14 | // --- ROOT system --- |
15 | |
16 | // --- Standard library --- |
17 | |
18 | // --- AliRoot header files --- |
19 | |
20 | #include "TObjArray.h" |
21 | #include "AliPHOSClusterizer.h" |
22 | #include "AliPHOSEmcRecPoint.h" |
23 | #include "AliPHOSPpsdRecPoint.h" |
24 | #include "AliPHOSTrackSegmentMaker.h" |
25 | |
26 | |
27 | class AliPHOSTrackSegmentMakerv1 : public AliPHOSTrackSegmentMaker { |
28 | |
29 | public: |
30 | |
31 | AliPHOSTrackSegmentMakerv1() ; |
32 | virtual ~ AliPHOSTrackSegmentMakerv1(){} // dtor |
33 | |
34 | Bool_t FindFit(AliPHOSEmcRecPoint * emcRP, int * MaxAt, Float_t * maxAtEnergy, |
35 | Int_t NPar, Float_t * FitParametres) ; //Used in UnfoldClusters, calls TMinuit |
36 | |
37 | void FillOneModule(DigitsList * Dl, RecPointsList * emcIn, TObjArray * emcOut, RecPointsList * ppsdIn, |
38 | TObjArray * ppsdOutUp, TObjArray * ppsdOutLow, Int_t &PHOSModule, Int_t & emcStopedAt, |
39 | Int_t & ppsdStopedAt) ; // Unfolds clusters and fills temporary arrais |
40 | |
41 | Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSPpsdRecPoint * Ppsd , Bool_t & TooFar ) ; // see R0 |
42 | |
43 | void MakeLinks(TObjArray * EmcRecPoints, TObjArray * PpsdRecPointsUp, TObjArray * PpsdRecPointsLow, |
44 | TClonesArray * LinkLowArray, TClonesArray *LinkUpArray) ; //Evaluates distances(links) between EMC and PPSD |
45 | |
46 | void MakePairs(TObjArray * EmcRecPoints, TObjArray * PpsdRecPointsUp, TObjArray * PpsdRecPointsLow, |
47 | TClonesArray * LinkLowArray, TClonesArray * LinkUpArray, TrackSegmentsList * trsl) ; |
48 | //Finds pairs(triplets) with smallest link |
49 | |
50 | void MakeTrackSegments(DigitsList * DL, RecPointsList * emcl, RecPointsList * ppsdl, TrackSegmentsList * trsl ) ; // does the job |
51 | |
52 | void SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;} //Radius within which we look for ppsd cluster |
53 | |
54 | Double_t ShowerShape(Double_t r) ; //Shape of shower used in unfolding |
55 | |
56 | void UnfoldClusters(DigitsList * DL, RecPointsList * emcIn, AliPHOSEmcRecPoint * iniEmc, Int_t Nmax, |
57 | int * maxAt, Float_t * maxAtEnergy, TObjArray * emclist) ; //Unfolds overlaping clusters using TMinuit packadge |
58 | |
59 | void static UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag); //used in TMinuit |
60 | |
61 | |
62 | private: |
63 | |
64 | Float_t fDelta ; // parameter used for sorting |
65 | Float_t fR0 ; // Maximal distance between EMC and PPSD clusters of one Track Segment in module plane |
66 | |
67 | public: |
68 | |
69 | ClassDef( AliPHOSTrackSegmentMakerv1,1) // track segment maker implementation , version 1 |
70 | |
71 | }; |
72 | |
73 | #endif // AliPHOSSUBTRACKERV1_H |