]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HMPID/AliHMPIDCluster.h
Comics run analizer
[u/mrichter/AliRoot.git] / HMPID / AliHMPIDCluster.h
CommitLineData
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()
8class TClonesArray; //Solve()
9
10class AliHMPIDCluster :public TObject
11{
12public:
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
38protected:
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
48typedef AliHMPIDCluster AliRICHCluster; // for backward compatibility
49
d3da6dc4 50//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
51void 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