//_________________________________________________________________________
// Hits class for PHOS
// A hit in PHOS is the sum of all hits in a single crystal
-//
-//*-- Author: Maxime Volkov (RRC KI) & Yves Schutz (SUBATECH)
+//*--
+//*-- Author: Maxime Volkov (RRC KI) & Yves Schutz (SUBATECH) & Dmitri Peressounko (RRC KI & SUBATECH)
// --- ROOT system ---
// --- Standard library ---
-#include <stdio.h>
#include <string.h>
#include <stdlib.h>
-#include <strstream.h>
// --- AliRoot header files ---
#include "AliPHOSHit.h"
#include "AliRun.h"
#include "AliConst.h"
-
+#include "AliPHOSLoader.h"
+#include "AliPHOSGeometry.h"
+#include "AliPHOS.h"
ClassImp(AliPHOSHit)
-
-//____________________________________________________________________________
-AliPHOSHit::AliPHOSHit(const AliPHOSHit & hit)
+
+ //____________________________________________________________________________
+ AliPHOSHit::AliPHOSHit(const AliPHOSHit & hit) : AliHit(hit)
{
- // copy ctor
-
+ // copy ctor
+ fX = hit.fX ;
+ fY = hit.fY ;
+ fZ = hit.fZ ;
fId = hit.fId ;
fELOS = hit.fELOS ;
fPrimary = hit.fPrimary ;
fTrack = hit.fTrack ;
- fX = hit.fX ;
- fY = hit.fY ;
- fZ = hit.fZ ;
- fPid = hit.fPid ;
-
+ fTime = hit.fTime ;
+
}
//____________________________________________________________________________
-AliPHOSHit::AliPHOSHit(Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits, Int_t pid, TLorentzVector p, Float_t *xy): AliHit(shunt, track)
+AliPHOSHit::AliPHOSHit(Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits): AliHit(shunt, track)
{
//
// Create a CPV hit object
//
-
+
+ fX = hits[0] ;
+ fY = hits[1] ;
+ fZ = hits[2] ;
+ fTime = hits[3] ;
fId = id ;
- fELOS = hits[3] ;
+ fELOS = hits[4] ;
fPrimary = primary ;
- fPid = pid ;
- fMomentum = p;
- fX = xy[0]; //position of particle first entering cristall/pad
- fY = xy[1];
- fZ = 9999.; //Fake Z to avoid FPE
}
-
+//____________________________________________________________________________
+Float_t AliPHOSHit::X() const
+{
+ // if(fX < -1000.){
+ TVector3 pos ;
+ AliPHOS * phos = static_cast<AliPHOS*> (gAlice->GetDetector("PHOS")) ;
+ phos->GetGeometry() ->RelPosInAlice(GetId(), pos) ;
+ return pos.X() ;
+ // fX = pos.X() ;
+ // fY = pos.Y() ;
+ // fZ = pos.Z() ;
+ // }
+ // return fX;
+}
+//____________________________________________________________________________
+Float_t AliPHOSHit::Y() const
+{
+ // if(fY < -1000.){
+ TVector3 pos ;
+ AliPHOS * phos = static_cast<AliPHOS*> (gAlice->GetDetector("PHOS")) ;
+ phos->GetGeometry() ->RelPosInAlice(GetId(), pos) ;
+ return pos.Y();
+ // fX = pos.X() ;
+ // fY = pos.Y() ;
+ // fZ = pos.Z() ;
+ // }
+ // return fY;
+}
+//____________________________________________________________________________
+Float_t AliPHOSHit::Z() const
+{
+ // if(fY < -1000.){
+ TVector3 pos ;
+ AliPHOS * phos = static_cast<AliPHOS*> (gAlice->GetDetector("PHOS")) ;
+ phos->GetGeometry() ->RelPosInAlice(GetId(), pos) ;
+ return pos.Z() ;
+ // fX = pos.X() ;
+ // fY = pos.Y() ;
+ // fZ = pos.Z() ;
+ // }
+ // return fZ;
+}
//____________________________________________________________________________
Bool_t AliPHOSHit::operator==(AliPHOSHit const &rValue) const
{
Bool_t rv = kFALSE ;
- if ( (fId == rValue.GetId()) && ( fPrimary == rValue.GetPrimary() ) && (fPid*rValue.fPid ! = 0) )
+ if ( (fId == rValue.GetId()) && ( fPrimary == rValue.GetPrimary() ) )
rv = kTRUE;
return rv;
}
//____________________________________________________________________________
-AliPHOSHit AliPHOSHit::operator+(const AliPHOSHit &rValue) const
+AliPHOSHit AliPHOSHit::operator+(const AliPHOSHit &rValue)
{
// Add the energy of the hit
- AliPHOSHit added(*this);
-
- // the accumulated hit position is the position of the first hi
- // added.fX = rValue.fX ;
- // added.fY = rValue.fY ;
- // added.fZ = rValue.fZ ;
+ fELOS += rValue.GetEnergy() ;
- added.fELOS += rValue.GetEnergy() ;
+ if(rValue.GetTime() < fTime)
+ fTime = rValue.GetTime() ;
- if(fPid == 0) fPid = rValue.fPid ;
-
- return added;
+ return *this;
}
//____________________________________________________________________________
-ostream& operator << (ostream& out, const AliPHOSHit& hit)
-{
- // Print out Id and energy
+// Commented out by Yu.Kharlov 4.09.2003
+// ostream& operator << (ostream& out, const AliPHOSHit& hit)
+// {
+// // Print out Id and energy
- out << "AliPHOSHit = " << hit.GetId() << " " << hit.GetEnergy() << endl ;
- return out ;
-}
+// //out << "AliPHOSHit = " << hit.GetId() << " " << hit.GetEnergy() << " " << hit.GetTime() << endl ;
+// Warning("operator <<", "Implement differently") ;
+// return out ;
+// }