X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSCpvRecPoint.cxx;h=5f3a4c566eba4ed25e1183a55cec66dc3a63b1b7;hb=3876e91da08ad304e8a8910d19c1cf0048de2923;hp=bd8aadb0b8369eedb43187bbfaeaa256cb635c15;hpb=351dd6348b2d6a89268f2717d98c08fc85e5dc79;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSCpvRecPoint.cxx b/PHOS/AliPHOSCpvRecPoint.cxx index bd8aadb0b83..5f3a4c566eb 100644 --- a/PHOS/AliPHOSCpvRecPoint.cxx +++ b/PHOS/AliPHOSCpvRecPoint.cxx @@ -15,10 +15,20 @@ /* $Id$ */ +/* History of cvs commits: + * + * $Log$ + * Revision 1.26 2007/06/18 07:02:44 kharlov + * Change the signature of EvalLocalPosition() to obey the method virtuality from the parent class + * + * Revision 1.25 2007/03/06 06:47:28 kharlov + * DP:Possibility to use actual vertex position added + */ + //_________________________________________________________________________ // RecPoint implementation for PHOS-CPV // An CpvRecPoint is a cluster of digits -//*-- Author: Yuri Kharlov +//-- Author: Yuri Kharlov // (after Dmitri Peressounko (RRC KI & SUBATECH)) // 30 October 2000 @@ -39,22 +49,22 @@ ClassImp(AliPHOSCpvRecPoint) //____________________________________________________________________________ -AliPHOSCpvRecPoint::AliPHOSCpvRecPoint() : AliPHOSEmcRecPoint() +AliPHOSCpvRecPoint::AliPHOSCpvRecPoint() : + AliPHOSEmcRecPoint(), + fLengX(-1), + fLengZ(-1) { // ctor - - fLengX = -1; - fLengZ = -1; } //____________________________________________________________________________ -AliPHOSCpvRecPoint::AliPHOSCpvRecPoint(const char * opt) : AliPHOSEmcRecPoint(opt) +AliPHOSCpvRecPoint::AliPHOSCpvRecPoint(const char * opt) : + AliPHOSEmcRecPoint(opt), + fLengX(-1), + fLengZ(-1) { // ctor - - fLengX = -1; - fLengZ = -1; - } +} //____________________________________________________________________________ AliPHOSCpvRecPoint::~AliPHOSCpvRecPoint() @@ -69,7 +79,7 @@ Bool_t AliPHOSCpvRecPoint::AreNeighbours(AliPHOSDigit * digit1, AliPHOSDigit * d Bool_t aren = kFALSE ; - AliPHOSGeometry * phosgeom = AliPHOSLoader::GetPHOSGeometry(); + AliPHOSGeometry * phosgeom = AliPHOSGeometry::GetInstance() ; Int_t relid1[4] ; phosgeom->AbsToRelNumbering(digit1->GetId(), relid1) ; @@ -131,7 +141,7 @@ Int_t AliPHOSCpvRecPoint::Compare(const TObject * obj) const } //______________________________________________________________________________ -void AliPHOSCpvRecPoint::ExecuteEvent(Int_t, Int_t, Int_t ) const +void AliPHOSCpvRecPoint::ExecuteEvent(Int_t, Int_t, Int_t ) /*const*/ { // // Execute action corresponding to one event // // This member function is called when a AliPHOSRecPoint is clicked with the locator @@ -239,14 +249,22 @@ void AliPHOSCpvRecPoint::ExecuteEvent(Int_t, Int_t, Int_t ) const } //____________________________________________________________________________ -void AliPHOSCpvRecPoint::EvalAll(Float_t logWeight,TClonesArray * digits) +void AliPHOSCpvRecPoint::EvalAll(TClonesArray * digits) +{ + // Evaluate local coordinate assuming the vertex in (000) and no inclination + AliPHOSEmcRecPoint::EvalAll(digits) ; +} +//____________________________________________________________________________ +void AliPHOSCpvRecPoint::EvalAll(Float_t logWeight, TVector3 &vtx, TClonesArray * digits) { // wraps other methods - AliPHOSEmcRecPoint::EvalAll(logWeight,digits) ; + TVector3 vInc(0,1,0); + AliPHOSEmcRecPoint::EvalAll(logWeight,vtx,digits) ; + EvalLocalPosition(logWeight, vtx, digits,vInc) ; EvalClusterLengths(digits) ; } //____________________________________________________________________________ -void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight,TClonesArray * digits) +void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight, TVector3 & /*vtx */, TClonesArray * digits, TVector3 &/* vInc */) { // Calculates the center of gravity in the local PHOS-module coordinates @@ -259,7 +277,7 @@ void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight,TClonesArray * digi AliPHOSDigit * digit ; - AliPHOSGeometry * phosgeom = AliPHOSLoader::GetPHOSGeometry(); + AliPHOSGeometry * phosgeom = AliPHOSGeometry::GetInstance(); Int_t iDigit; @@ -270,10 +288,14 @@ void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight,TClonesArray * digi Float_t zi ; phosgeom->AbsToRelNumbering(digit->GetId(), relid) ; phosgeom->RelPosInModule(relid, xi, zi); - Float_t w = TMath::Max( 0., logWeight + TMath::Log( fEnergyList[iDigit] / fAmp ) ) ; - x += xi * w ; - z += zi * w ; - wtot += w ; + if (fAmp>0 && fEnergyList[iDigit]>0) { + Float_t w = TMath::Max( 0., logWeight + TMath::Log( fEnergyList[iDigit] / fAmp ) ) ; + x += xi * w ; + z += zi * w ; + wtot += w ; + } + else + AliError(Form("Wrong energy %f and/or amplitude %f\n", fEnergyList[iDigit], fAmp)); } if (wtot != 0) { @@ -288,7 +310,6 @@ void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight,TClonesArray * digi fLocPos.SetX(x) ; fLocPos.SetY(0.) ; fLocPos.SetZ(z) ; - fLocPosM = 0 ; } @@ -306,7 +327,7 @@ void AliPHOSCpvRecPoint::EvalClusterLengths(TClonesArray * digits) AliPHOSDigit * digit ; - AliPHOSGeometry * phosgeom = AliPHOSLoader::GetPHOSGeometry(); + AliPHOSGeometry * phosgeom = AliPHOSGeometry::GetInstance(); const Int_t kMaxLeng=20; Int_t idX[kMaxLeng], idZ[kMaxLeng]; @@ -338,10 +359,8 @@ void AliPHOSCpvRecPoint::EvalClusterLengths(TClonesArray * digits) } } - - //____________________________________________________________________________ -void AliPHOSCpvRecPoint::Print() +void AliPHOSCpvRecPoint::Print(const Option_t *) const { // Print the list of digits belonging to the cluster