]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSRecPoint.cxx
Fixes for cmake
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRecPoint.cxx
index ae1c8b8c47957634c795028dc3e26b86e3ab5d65..e84d789d4ffa5365bdc142e45bfef6d92027597e 100644 (file)
@@ -18,7 +18,7 @@
 //  Why should I put meaningless comments
 //  just to satisfy
 //  the code checker                
-//*-- Author: Gines Martinez (SUBATECH)
+//-- Author: Gines Martinez (SUBATECH)
 
 // --- ROOT system ---
 #include "TPad.h"
 // --- Standard library ---
 
 // --- AliRoot header files ---
-
+#include "AliLog.h"
+#include "AliPHOSLoader.h"
 #include "AliPHOSGeometry.h"
 #include "AliPHOSDigit.h"
 #include "AliPHOSRecPoint.h"
-#include "AliPHOSGetter.h"
 #include "AliGeomManager.h"
 
 ClassImp(AliPHOSRecPoint)
@@ -43,10 +43,10 @@ ClassImp(AliPHOSRecPoint)
 //____________________________________________________________________________
 AliPHOSRecPoint::AliPHOSRecPoint()
   : AliCluster(),fPHOSMod(0),
-    fMulTrack(0),fMaxDigit(100),fMulDigit(0),fMaxTrack(0),
+    fMulTrack(0),fMaxDigit(100),fMulDigit(0),fMaxTrack(200),
     fDigitsList(0),fTracksList(0),fAmp(0),
     fIndexInList(-1), // to be set when the point is already stored
-    fLocPos(0,0,0),fLocPosM(0)
+    fLocPos(0,0,0)
 {
   // ctor
 
@@ -56,9 +56,9 @@ AliPHOSRecPoint::AliPHOSRecPoint()
 AliPHOSRecPoint::AliPHOSRecPoint(const char * ) 
   : AliCluster(),fPHOSMod(0),
     fMulTrack(0),fMaxDigit(100),fMulDigit(0),fMaxTrack(200),
-    fDigitsList(new int[fMaxDigit]),fTracksList(new int[fMaxTrack]),fAmp(0),
+    fDigitsList(new Int_t[fMaxDigit]),fTracksList(new Int_t[fMaxTrack]),fAmp(0),
     fIndexInList(-1), // to be set when the point is already stored
-    fLocPos(0,0,0),fLocPosM(new TMatrixF(3,3))
+    fLocPos(0,0,0)
 
 {
   // ctor
@@ -69,7 +69,6 @@ AliPHOSRecPoint::~AliPHOSRecPoint()
 {
   // dtor
   
-  delete fLocPosM ; 
   delete [] fDigitsList ; 
   delete [] fTracksList ;  
   
@@ -78,16 +77,18 @@ AliPHOSRecPoint::~AliPHOSRecPoint()
 AliPHOSRecPoint::AliPHOSRecPoint(const AliPHOSRecPoint &rp) : 
   AliCluster(rp),
   fPHOSMod(rp.fPHOSMod),fMulTrack(rp.fMulTrack),fMaxDigit(rp.fMaxDigit),
-  fMulDigit(rp.fMulDigit),fMaxTrack(rp.fMaxTrack),fDigitsList(new int[rp.fMaxDigit]),
-  fTracksList(new int[rp.fMaxTrack]),fAmp(rp.fAmp),fIndexInList(rp.fIndexInList), 
-  fLocPos(rp.fLocPos),fLocPosM(rp.fLocPosM)
+  fMulDigit(rp.fMulDigit),fMaxTrack(rp.fMaxTrack),fDigitsList(0x0),
+  fTracksList(0x0),fAmp(rp.fAmp),fIndexInList(rp.fIndexInList), 
+  fLocPos(rp.fLocPos)
 {
   //copy ctor
 
-  for(Int_t i=0; i<fMaxDigit; i++)
+  if (rp.fMulDigit>0) fDigitsList = new Int_t[rp.fMulDigit];
+  for(Int_t i=0; i<fMulDigit; i++)
     fDigitsList[i] = rp.fDigitsList[i];
 
-  for(Int_t i=0; i<fMaxTrack; i++)
+  if (rp.fMulTrack>0) fTracksList = new Int_t[rp.fMulTrack];
+  for(Int_t i=0; i<fMulTrack; i++)
     fTracksList[i] = rp.fTracksList[i];
   
 }
@@ -104,7 +105,6 @@ AliPHOSRecPoint& AliPHOSRecPoint::operator= (const AliPHOSRecPoint &rp)
   fAmp = rp.fAmp;
   fIndexInList = rp.fIndexInList; 
   fLocPos = rp.fLocPos;
-  fLocPosM = rp.fLocPosM;
 
   for(Int_t i=0; i<fMaxDigit; i++)
     fDigitsList[i] = rp.fDigitsList[i];
@@ -164,12 +164,7 @@ void AliPHOSRecPoint::ExecuteEvent(Int_t event, Int_t, Int_t)
   case kButton1Down:{
     AliPHOSDigit * digit ;
   
-//  Accessing geometry this way is equivalent to getting from gAlice
-// to have Detector in Folder one have to load gAlice anyway
-//    AliPHOSLoader * gime = AliPHOSLoader::GetInstance();
-//    AliPHOSGeometry * phosgeom =  const_cast<AliPHOSGeometry*>(gime->PHOSGeometry());
-
-    AliPHOSGeometry * phosgeom = AliPHOSLoader::GetPHOSGeometry();
+    AliPHOSGeometry * phosgeom =  AliPHOSGeometry::GetInstance() ;
 
     Int_t iDigit;
     Int_t relid[4] ;
@@ -228,11 +223,10 @@ break;
   }
 }
 //____________________________________________________________________________
-void AliPHOSRecPoint::EvalAll(TClonesArray * digits
+void AliPHOSRecPoint::EvalAll(TClonesArray * /* digits */
 {
   //evaluates (if necessary) all RecPoint data members 
 
-  EvalPrimaries(digits) ;
 }
 
 //____________________________________________________________________________
@@ -243,80 +237,24 @@ void AliPHOSRecPoint::EvalPHOSMod(AliPHOSDigit * digit)
   if( fPHOSMod == 0){
   Int_t relid[4] ; 
  
-  AliPHOSGeometry * phosgeom = (AliPHOSGetter::Instance())->PHOSGeometry();
+  AliPHOSGeometry * phosgeom = (AliPHOSGeometry::GetInstance());
 
   phosgeom->AbsToRelNumbering(digit->GetId(), relid) ;
   fPHOSMod = relid[0];
   }
 }
 
-//______________________________________________________________________________
-void  AliPHOSRecPoint::EvalPrimaries(TClonesArray * digits)
-{
-  // Constructs the list of primary particles (tracks) which have contributed to this RecPoint
-  
-  AliPHOSDigit * digit ;
-  Int_t * tempo    = new Int_t[fMaxTrack] ;
-
-  Int_t index ;  
-  for ( index = 0 ; index < GetDigitsMultiplicity() ; index++ ) { // all digits
-    digit = dynamic_cast<AliPHOSDigit *>(digits->At( fDigitsList[index] )) ; 
-    Int_t nprimaries = digit->GetNprimary() ;
-    if(nprimaries){
-      Int_t * newprimaryarray = new Int_t[nprimaries] ;
-      Int_t ii ; 
-      for ( ii = 0 ; ii < nprimaries ; ii++)
-       newprimaryarray[ii] = digit->GetPrimary(ii+1) ; 
-
-      Int_t jndex ;
-      for ( jndex = 0 ; jndex < nprimaries ; jndex++ ) { // all primaries in digit
-       if ( fMulTrack > fMaxTrack ) {
-         fMulTrack = - 1 ;
-         Error("EvalPrimaries", "GetNprimaries ERROR > increase fMaxTrack" ) ;
-         break ;
-       }
-       Int_t newprimary = newprimaryarray[jndex] ;
-       Int_t kndex ;
-       Bool_t already = kFALSE ;
-       for ( kndex = 0 ; kndex < fMulTrack ; kndex++ ) { //check if not already stored
-         if ( newprimary == tempo[kndex] ){
-           already = kTRUE ;
-           break ;
-         }
-       } // end of check
-       if ( !already) { // store it
-         tempo[fMulTrack] = newprimary ; 
-         fMulTrack++ ;
-       } // store it
-      } // all primaries in digit
-      delete [] newprimaryarray ; 
-    }
-  } // all digits
-
-  if(fMulTrack)
-    fTracksList = new Int_t[fMulTrack] ;
-  for(index = 0; index < fMulTrack; index++)
-    fTracksList[index] = tempo[index] ;
-  
-  delete [] tempo ;
-  
-}
 //____________________________________________________________________________
 void AliPHOSRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrixF & gmat) const
 {
   // returns the position of the cluster in the global reference system of ALICE
   // and the uncertainty on this position
 
-  (AliPHOSGetter::Instance())->PHOSGeometry()->GetGlobalPHOS(this, gpos, gmat);
-
-//   Float_t xyz[3];
-//   GetGlobalXYZ(xyz);
-//   gpos.SetXYZ(xyz[0],xyz[1],xyz[2]);
-
+   AliPHOSGeometry * phosgeom = (AliPHOSGeometry::GetInstance());
+   phosgeom->GetGlobalPHOS(this, gpos, gmat);
   
 }
 
-
 //______________________________________________________________________________
 void AliPHOSRecPoint::Paint(Option_t *)
 {
@@ -366,18 +304,18 @@ void AliPHOSRecPoint::EvalLocal2TrackingCSTransform()
   Double_t dy;
   Double_t crystalShift;
 
-  AliPHOSGeometry * phosgeom = (AliPHOSGetter::Instance())->PHOSGeometry();
+  AliPHOSGeometry * phosgeom = AliPHOSGeometry::GetInstance();
   AliPHOSEMCAGeometry* geoEMCA = phosgeom->GetEMCAGeometry(); 
 
   //Calculate offset to crystal surface.
   //See fCrystalShift code in AliPHOSGeometry::Init()).
 
-  Float_t * inthermo = geoEMCA->GetInnerThermoHalfSize() ;
-  Float_t * strip = geoEMCA->GetStripHalfSize() ;
-  Float_t* splate = geoEMCA->GetSupportPlateHalfSize();
-  Float_t * crystal = geoEMCA->GetCrystalHalfSize() ;
-  Float_t * pin = geoEMCA->GetAPDHalfSize() ;
-  Float_t * preamp = geoEMCA->GetPreampHalfSize() ;
+  const Float_t * inthermo = geoEMCA->GetInnerThermoHalfSize() ;
+  const Float_t * strip    = geoEMCA->GetStripHalfSize() ;
+  const Float_t * splate   = geoEMCA->GetSupportPlateHalfSize();
+  const Float_t * crystal  = geoEMCA->GetCrystalHalfSize() ;
+  const Float_t * pin      = geoEMCA->GetAPDHalfSize() ;
+  const Float_t * preamp   = geoEMCA->GetPreampHalfSize() ;
   crystalShift = -inthermo[1]+strip[1]+splate[1]+crystal[1]-geoEMCA->GetAirGapLed()/2.+pin[1]+preamp[1] ;
 
   if(IsEmc()) {
@@ -390,7 +328,7 @@ void AliPHOSRecPoint::EvalLocal2TrackingCSTransform()
   lxyz[1] = lxyz[1] - dy;
 
   const TGeoHMatrix* tr2loc = GetTracking2LocalMatrix();
-  if(!tr2loc) AliFatal(Form("No Tracking2LocalMatrix found."));
+  if(!tr2loc) AliFatal(Form("No Tracking2LocalMatrix found for VolumeID=%d",GetVolumeId()));
 
   tr2loc->MasterToLocal(lxyz,txyz);
   SetX(txyz[0]); SetY(txyz[1]); SetZ(txyz[2]);