3 // Implementation for TTree output in PHOS DA
4 // for calibrating energy by pi0 and MIP.
6 // -- Author: Hisayuki Torii (Hiroshima Univ.)
9 #ifndef AliPHOSDATreeCluster_H
10 #define AliPHOSDATreeCluster_H
13 #include "AliPHOSDATreeDigit.h"
15 class AliPHOSDATreeCluster{
17 friend std::ostream& operator<<(std::ostream& out,const AliPHOSDATreeCluster& cluster);
21 //AliPHOSDATreeCluster():fEnergy(0),fX(0),fY(0),fZ(0),fNDigits(0),fDigits(0){/**/};
22 //AliPHOSDATreeCluster(float energy,float x,float y,float z):fEnergy(energy),fX(x),fY(y),fZ(z),fNDigits(0),fDigits(0){/**/};
23 //void Set(float energy,float x,float y,float z){fEnergy=energy; fX=x; fY=y; fZ=z;};
24 //float GetX(){ return fX; };
25 //float GetY(){ return fY; };
26 //float GetZ(){ return fZ; };
27 AliPHOSDATreeCluster():fEnergy(0),fRow(-100),fCol(-100),fNDigits(0),fDigits(0){/**/};
28 AliPHOSDATreeCluster(float energy,float row,float col):fEnergy(energy),fRow(row),fCol(col),fNDigits(0),fDigits(0){/**/};
29 virtual ~AliPHOSDATreeCluster(){ if(fNDigits>0) delete[] fDigits; };
30 AliPHOSDATreeCluster(const AliPHOSDATreeCluster& cluster);
31 AliPHOSDATreeCluster& operator=(const AliPHOSDATreeCluster& cluster);
32 void Set(float energy,float row,float col){fEnergy=energy; fRow=row; fCol=col; };
33 void SetEnergy(float energy){fEnergy=energy;};
34 float GetEnergy() const{ return fEnergy; };
35 float GetRow() const{ return fRow; };
36 float GetCol() const{ return fCol; };
37 bool CalculateProperty();
38 int GetNDigits() const{ return fNDigits; };
39 AliPHOSDATreeDigit& GetDigit(int ndigit){
40 if( ndigit >= 0 && ndigit < fNDigits ) return fDigits[ndigit];
41 else std::cout<<" AliPHOSDATreeCluster::GetDigit("<<ndigit<<")::Error. Out of range > "<<fNDigits<<std::endl;
43 AliPHOSDATreeDigit& GetMaxDigit(){
44 if( fNDigits >= 0 ) return fDigits[0];
45 else std::cout<<" AliPHOSDATreeCluster::GetMaxDigit()::Warning No digit information."<<std::endl;
47 bool Append(AliPHOSDATreeDigit& digit);
48 bool Append(AliPHOSDATreeCluster& cluster);
49 bool IsNeighbor(const AliPHOSDATreeDigit& digit) const;
50 bool IsNeighbor(const AliPHOSDATreeCluster& cluster) const;
52 void Print(char* opt="");
56 float fEnergy; // Energy in GeV
57 float fRow; // PHOS Internal Coordinates, 0 - 63
58 float fCol; // PHOS Internal Coordinates, 0 - 55
60 int fNDigits; // Number of digits
61 AliPHOSDATreeDigit* fDigits; //[fNDigits]
63 ClassDef(AliPHOSDATreeCluster,1) // Simple Cluster Structure for PHOS DA