]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSCpvRecPoint.cxx
L1phase shift corrected
[u/mrichter/AliRoot.git] / PHOS / AliPHOSCpvRecPoint.cxx
index f93f91b4efbfbe74ea3dba5bbaeb0719761efe0c..b5623b623a1e6ca1dcba5ef5fa31012bd8b87899 100644 (file)
 
 /* $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 
 
 // --- ROOT system ---
-#include "TPad.h"
-#include "TH2.h"
+
 #include "TMath.h" 
-#include "TCanvas.h" 
 #include "TClonesArray.h" 
 
 // --- Standard library ---
 
-#include <iostream.h> 
-
 // --- AliRoot header files ---
-
+#include "AliLog.h"
+#include "AliPHOSGeometry.h" 
+#include "AliPHOSDigit.h"
 #include "AliPHOSCpvRecPoint.h"
-#include "AliPHOSGetter.h"
+#include "AliPHOSLoader.h"
+
 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()
@@ -70,8 +79,7 @@ Bool_t AliPHOSCpvRecPoint::AreNeighbours(AliPHOSDigit * digit1, AliPHOSDigit * d
   
   Bool_t aren = kFALSE ;
   
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ; 
-  AliPHOSGeometry * phosgeom =  (AliPHOSGeometry*)gime->PHOSGeometry();
+  AliPHOSGeometry * phosgeom =  AliPHOSGeometry::GetInstance() ;
 
   Int_t relid1[4] ; 
   phosgeom->AbsToRelNumbering(digit1->GetId(), relid1) ; 
@@ -133,7 +141,7 @@ Int_t AliPHOSCpvRecPoint::Compare(const TObject * obj) const
 }
 
 //______________________________________________________________________________
-void AliPHOSCpvRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) 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
@@ -144,7 +152,7 @@ void AliPHOSCpvRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) const
 
 //   //   static Int_t pxold, pyold;
 
-//   AliPHOSGetter * gime =  AliPHOSGetter::GetInstance() ; 
+//   AliPHOSLoader * gime =  AliPHOSLoader::GetInstance() ; 
   
 //   static TGraph *  digitgraph = 0 ;
   
@@ -241,14 +249,22 @@ void AliPHOSCpvRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) 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 
 
@@ -261,9 +277,8 @@ void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight,TClonesArray * digi
   
   AliPHOSDigit * digit ;
 
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  AliPHOSGeometry * phosgeom =  (AliPHOSGeometry*)gime->PHOSGeometry();
-
+  AliPHOSGeometry * phosgeom =  AliPHOSGeometry::GetInstance();
+  
   Int_t iDigit;
 
   for(iDigit=0; iDigit<fMulDigit; iDigit++) {
@@ -273,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) {
@@ -285,8 +304,8 @@ void AliPHOSCpvRecPoint::EvalLocalPosition(Float_t logWeight,TClonesArray * digi
   } else {
     x = -1e6 ;
     z = -1e6 ;
-    if (fMulDigit != 0) cout << "AliPHOSCpvRecPoint: too low log weight factor "
-                            << "to evaluate cluster's center\n";
+    if (fMulDigit != 0) 
+      AliWarning(Form("Too low log weight factor to evaluate cluster's center" )) ;
   }
   fLocPos.SetX(x)  ;
   fLocPos.SetY(0.) ;
@@ -308,8 +327,7 @@ void AliPHOSCpvRecPoint::EvalClusterLengths(TClonesArray * digits)
 
   AliPHOSDigit * digit ;
 
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  AliPHOSGeometry * phosgeom =  (AliPHOSGeometry*)gime->PHOSGeometry();
+  AliPHOSGeometry * phosgeom =  AliPHOSGeometry::GetInstance();
 
   const Int_t kMaxLeng=20;
   Int_t idX[kMaxLeng], idZ[kMaxLeng];
@@ -341,29 +359,29 @@ void AliPHOSCpvRecPoint::EvalClusterLengths(TClonesArray * digits)
   }
 }
 
-
-
 //____________________________________________________________________________
-void AliPHOSCpvRecPoint::Print(Option_t * option) 
+void AliPHOSCpvRecPoint::Print(const Option_t *) const
 {
   // Print the list of digits belonging to the cluster
   
-  cout << "AliPHOSCpvRecPoint: " << endl ;
-
+  TString message ; 
+  message  =  "AliPHOSCpvRecPoint: " ;
+  message +=  "Digits #   " ;
+  AliInfo(message.Data()) ; 
+  
   Int_t iDigit;
 
-  cout << "Digits #   "  ;
   for(iDigit=0; iDigit<fMulDigit; iDigit++) 
-    cout << fDigitsList[iDigit] << "  "  ; 
-  cout << endl ;
+    printf(" %d \n", fDigitsList[iDigit]) ; 
 
-  cout << "Energies: "  ;
+  printf("Energies: \n")  ;
   for(iDigit=0; iDigit<fMulDigit; iDigit++) 
-    cout << fEnergyList[iDigit] << "  "  ; 
-  cout << endl ;
+    printf(" %f ", fEnergyList[iDigit]) ; 
   
-  cout << "       Multiplicity    = " << fMulDigit  << endl ;
-  cout << "       Cluster Energy  = " << fAmp << endl ;
-  cout << "       Stored at position " << GetIndexInList() << endl ; 
+  message  = "       Multiplicity    = %d\n" ;
+  message += "       Cluster Energy  = %f\n" ;
+  message += "       Stored at position %d\n" ; 
  
+  printf(message.Data(), fMulDigit, fAmp, GetIndexInList() ) ; 
+
 }