9 #include "AliJFCluster.h"
11 ClassImp(AliJFCluster)
13 AliJFCluster::AliJFCluster(Int_t n) : fStatus(0),fNMerge(0),fPx(0),fPy(0),fPz(0),fE(0),
14 fY(0),fPhi(0),fPt2(0),fPt2dD(0),fList(n)
18 AliJFCluster::AliJFCluster(const AliJFCluster ©)
20 fStatus=copy.GetStatus();
21 fNMerge=copy.GetNMerge();
29 fPt2dD=copy.GetPt2D();
30 fList=*copy.GetClusterList();
33 AliJFCluster::AliJFCluster(AliJFPreCluster ©)
43 fList.push_back(©);
46 AliJFCluster::AliJFCluster(AliJFPreCluster *precluster)
50 SetValues(precluster->GetPx(),fPy=precluster->GetPy(),fPz=precluster->GetPz(),fE=precluster->GetE());
51 fList.push_back(precluster);
54 AliJFCluster::~AliJFCluster()
56 fList.erase(fList.begin(),fList.end());
59 AliJFCluster& AliJFCluster::operator=(const AliJFCluster &rhs)
61 fStatus=rhs.GetStatus();
62 fNMerge=rhs.GetNMerge();
71 fList=*rhs.GetClusterList();
75 AliJFCluster& AliJFCluster::operator=(AliJFPreCluster &rhs)
85 fList.push_back(&rhs);
89 AliJFCluster& AliJFCluster::operator+=(AliJFCluster &rhs) //mark rhs as being merged!
92 cerr << "Cluster cannot be combined with invalid cluster:" << endl;
93 cerr << *this << endl;
98 AddValues(rhs.GetPx(),fPy=rhs.GetPy(),fPz=rhs.GetPz(),fE=rhs.GetE());
99 vector<AliJFPreCluster*> tmp=*rhs.GetClusterList();
100 for(vector<AliJFPreCluster*>::iterator i=tmp.begin();i!=tmp.end();i++){
104 rhs.MarkIsMerged(); //change even rhs!
109 AliJFCluster& AliJFCluster::operator+=(AliJFPreCluster &rhs)
111 AddValues(rhs.GetPx(),rhs.GetPy(),rhs.GetPz(),rhs.GetE());
112 fList.push_back(&rhs);
117 ostream& operator<<(ostream& o, const AliJFCluster &c)
119 o << c.GetStatus() << ": " << c.GetPx() << " " << c.GetPy() << " " << c.GetPz() << " " << c.GetE();
124 void AliJFCluster::CombineCluster(AliJFCluster &rhs) //mark rhs as being merged!
127 cerr << "Error AliJFCluster: Cluster cannot be combined with invalid cluster:" << endl;
128 cerr << *this << endl;
132 AddValues(rhs.GetPx(),fPy=rhs.GetPy(),rhs.GetPz(),rhs.GetE());
133 vector<AliJFPreCluster*> tmp=*rhs.GetClusterList();
134 for(vector<AliJFPreCluster*>::iterator i=tmp.begin();i!=tmp.end();i++){
138 rhs.MarkIsMerged(); //change even rhs!
141 void AliJFCluster::Print()
143 cout << "Cluster " << " " << *this << endl;
145 for(vector<AliJFPreCluster*>::iterator i=fList.begin();i!=fList.end();i++){
147 cout << "PreCluster " << n << ": " << *(*i) << endl;
151 void AliJFCluster::SetValues(Float_t px, Float_t py, Float_t pz, Float_t E)
161 void AliJFCluster::SetValues()
164 fPt2=fPx*fPx+fPy*fPy;
165 if(fE<0) fE=TMath::Sqrt(fPt2+fPz*fPz);
167 fPhi=TMath::Pi()+TMath::ATan2(-fPy,-fPx);
168 fY=0.5*TMath::Log((fE+fPz)/(fE-fPz));
170 else if(fY<-10) fY=-10;
172 fPt2=fPt2dD=fPhi=fY=0;
176 void AliJFCluster::AddValues(Float_t px, Float_t py, Float_t pz, Float_t E)
187 Float_t AliJFCluster::D2=1.0;