]>
Commit | Line | Data |
---|---|---|
d3da6dc4 | 1 | #ifndef AliHMPIDCluster_h |
2 | #define AliHMPIDCluster_h | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | #include "AliHMPIDDigit.h" //DigAdd() | |
7 | #include <TObjArray.h> //DigAdd() | |
8 | class TClonesArray; //Solve() | |
9 | ||
10 | class AliHMPIDCluster :public TObject | |
11 | { | |
12 | public: | |
13 | enum EClusterStatus {kFor,kCoG,kUnf,kEmp=-1}; //status flags | |
14 | AliHMPIDCluster( ):TObject( ),fSt(kEmp ),fCh(-1 ),fQ(-1 ),fX(-1 ),fY(-1 ),fDigs(0 ) {} | |
15 | AliHMPIDCluster(Int_t c,Float_t x,Float_t y,Int_t q):TObject( ),fSt(kUnf ),fCh(c ),fQ(q ),fX(x ),fY(y ),fDigs(0 ) {} | |
16 | AliHMPIDCluster(const AliHMPIDCluster &c ):TObject(c),fSt(c.fSt),fCh(c.fCh),fQ(c.fQ),fX(c.fX),fY(c.fY),fDigs(c.fDigs ? new TObjArray(*c.fDigs):0) {} | |
17 | AliHMPIDCluster &operator=(const AliHMPIDCluster &c) { | |
18 | if(this == &c)return *this;TObject::operator=(c); fSt=c.fSt; fCh=c.fCh; fQ=c.fQ; fX=c.fX; fY=c.fY; fDigs=c.fDigs ? new TObjArray(*c.fDigs):0; return *this;} | |
19 | ||
20 | virtual ~AliHMPIDCluster( ) {DigDel();} | |
21 | //framework part | |
22 | void Print (Option_t *opt="" )const; //overloaded TObject::Print() to print cluster info | |
23 | static void FitFunc(Int_t &, Double_t *, Double_t &, Double_t *, Int_t); //fit function to be used by MINUIT | |
24 | //private part | |
25 | void CoG ( ); //calculates center of gravity | |
26 | void CorrSin ( ); //sinoidal correction | |
27 | Int_t Ch ( )const{return fCh; } //chamber number | |
28 | inline void DigAdd (AliHMPIDDigit *pDig ); //add new digit ot the cluster | |
29 | void DigDel ( ) {if(fDigs) {delete fDigs;fDigs=0;} } //deletes the list of digits (not digits!) | |
30 | AliHMPIDDigit* Dig (Int_t i )const{return (AliHMPIDDigit*)fDigs->At(i); } //pointer to i-th digit | |
31 | TObjArray* DigLst ( )const{return fDigs; } //list of digits | |
32 | void Reset ( ) {DigDel();fQ=fCh=-1;fX=fY=-1;fSt=kEmp; } //cleans the cluster | |
33 | Int_t Solve (TClonesArray *pCluLst,Bool_t isUnfold ); //solve cluster: MINUIT fit or CoG | |
34 | Int_t Size ( )const{return (fDigs)?fDigs->GetEntriesFast():0; } //number of pads in cluster | |
35 | Int_t Q ( )const{return fQ; } //cluster charge in QDC channels | |
36 | Float_t X ( )const{return fX; } //cluster x position in LRS | |
37 | Float_t Y ( )const{return fY; } //cluster y position in LRS | |
38 | protected: | |
39 | Int_t fSt; //flag to mark the quality of the cluster | |
40 | Int_t fCh; //chamber number | |
41 | Int_t fQ; //QDC value | |
42 | Float_t fX; //local x postion, [cm] | |
43 | Float_t fY; //local y postion, [cm] | |
44 | TObjArray *fDigs; //! list of digits forming this cluster | |
45 | ClassDef(AliHMPIDCluster,5) //HMPID cluster class | |
46 | };//class AliHMPIDCluster | |
cf7e313e | 47 | |
48 | typedef AliHMPIDCluster AliRICHCluster; // for backward compatibility | |
49 | ||
d3da6dc4 | 50 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
51 | void AliHMPIDCluster::DigAdd(AliHMPIDDigit *pDig) | |
52 | { | |
53 | // Adds a given digit to the list of digits belonging to this cluster, cluster is not owner of digits | |
54 | // Arguments: pDig - pointer to digit to be added | |
55 | // Returns: none | |
56 | if(!fDigs) {fQ=0;fDigs = new TObjArray;} | |
57 | fDigs->Add(pDig); | |
58 | fQ+=(Int_t)pDig->Q(); | |
59 | fCh=pDig->Ch(); | |
60 | fSt=kFor; | |
61 | } | |
62 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
63 | #endif |