X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCALDigit.cxx;h=f90e10f152a88d8fd763a5e1c362ffec54a35c17;hb=88d764f0b15a9fbbfe28660e08a94f3a34b9d6ca;hp=49ecc78f3cb4bef985a27306aa8649492f5e811c;hpb=61e0abb5c9bbd6e578ed6769602e4d9bb80ba13e;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALDigit.cxx b/EMCAL/AliEMCALDigit.cxx index 49ecc78f3cb..f90e10f152a 100644 --- a/EMCAL/AliEMCALDigit.cxx +++ b/EMCAL/AliEMCALDigit.cxx @@ -13,18 +13,18 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* $Id$ */ +/* $Id: */ //_________________________________________________________________________ -// EMCAL digit: Id -// energy -// 3 identifiers for the primary particle(s) at the origine of the digit -// The digits are made in FinishEvent() by summing all the hits in a single EMCAL crystal or PPSD gas cell -// It would be nice to replace the 3 identifiers by an array, but, because digits are kept in a TClonesQArray, -// it is not possible to stream such an array... (beyond my understqnding!) +// EMCAL digit: +// A Digit is the sum of the energy lost in an EMCAL Tower +// It also stores information on Primary, and enterring particle +// tracknumbers Digits are created using AliEMCALSDigitizer, followed +// by AliEMCALDigitizer // -//*-- Author: Laurent Aphecetche & Yves Schutz (SUBATECH) - +//*-- Author: Sahal Yacoob (LBL) +// based on : AliPHOSDigit +//__________________________________________________________________________ // --- ROOT system --- @@ -35,6 +35,8 @@ // --- AliRoot header files --- #include "AliEMCALDigit.h" +#include "AliEMCALGeometry.h" +#include "AliEMCALGetter.h" ClassImp(AliEMCALDigit) @@ -49,16 +51,21 @@ ClassImp(AliEMCALDigit) fNMaxPrimary = 5 ; fNiparent = 0 ; fNMaxiparent = fNMaxPrimary*10; + fPrimary = new Int_t[fNMaxPrimary] ; + fIparent = new Int_t[fNMaxiparent] ; } //____________________________________________________________________________ -AliEMCALDigit::AliEMCALDigit(Int_t primary, Int_t iparent, Int_t id, Int_t DigEnergy, Int_t index) +AliEMCALDigit::AliEMCALDigit(Int_t primary, Int_t iparent, Int_t id, Int_t DigEnergy, Float_t time, Int_t index) { // ctor with all data fNMaxPrimary = 5 ; fNMaxiparent = fNMaxPrimary*10; + fPrimary = new Int_t[fNMaxPrimary] ; + fIparent = new Int_t[fNMaxiparent] ; fAmp = DigEnergy ; + fTime = time ; fId = id ; fIndexInList = index ; if( primary != -1){ @@ -91,6 +98,8 @@ AliEMCALDigit::AliEMCALDigit(const AliEMCALDigit & digit) fNMaxPrimary = digit.fNMaxPrimary ; fNMaxiparent = digit.fNMaxiparent ; + fPrimary = new Int_t[fNMaxPrimary] ; + fIparent = new Int_t[fNMaxiparent] ; Int_t i ; for ( i = 0; i < fNMaxPrimary ; i++) fPrimary[i] = digit.fPrimary[i] ; @@ -98,6 +107,7 @@ AliEMCALDigit::AliEMCALDigit(const AliEMCALDigit & digit) for (j = 0; j< fNMaxiparent ; j++) fIparent[j] = digit.fIparent[j] ; fAmp = digit.fAmp ; + fTime = digit.fTime ; fId = digit.fId; fIndexInList = digit.fIndexInList ; fNprimary = digit.fNprimary ; @@ -108,7 +118,8 @@ AliEMCALDigit::AliEMCALDigit(const AliEMCALDigit & digit) AliEMCALDigit::~AliEMCALDigit() { // Delete array of primiries if any - + delete [] fPrimary ; + delete [] fIparent ; } //____________________________________________________________________________ @@ -134,12 +145,28 @@ Int_t AliEMCALDigit::Compare(const TObject * obj) const } +//____________________________________________________________________________ +const Float_t AliEMCALDigit::GetEta() const +{ + Float_t eta=-10., phi=-10.; + AliEMCALGeometry::GetInstance()->EtaPhiFromIndex(fId,eta,phi); + return eta ; +} + +//____________________________________________________________________________ +const Float_t AliEMCALDigit::GetPhi() const +{ + Float_t eta=-10., phi=-10.; + AliEMCALGeometry::GetInstance()->EtaPhiFromIndex(fId,eta,phi); + return phi ; +} + //____________________________________________________________________________ Int_t AliEMCALDigit::GetPrimary(Int_t index) const { // retrieves the primary particle number given its index in the list Int_t rv = -1 ; - if ( index <= fNprimary ){ + if ( index <= fNprimary && index > 0){ rv = fPrimary[index-1] ; } @@ -160,6 +187,15 @@ Int_t AliEMCALDigit::GetIparent(Int_t index) const } +//______________________________________________________________________ +const Bool_t AliEMCALDigit::IsInPreShower() const +{ + Bool_t rv = kFALSE ; + const AliEMCALGeometry * geom = AliEMCALGetter::GetInstance()->EMCALGeometry() ; + if( GetId() > (geom->GetNZ() * geom->GetNPhi() )) + rv = kTRUE; + return rv; +} //____________________________________________________________________________ void AliEMCALDigit::ShiftPrimary(Int_t shift){ @@ -188,6 +224,8 @@ AliEMCALDigit& AliEMCALDigit::operator+(AliEMCALDigit const & digit) // if amplitude is larger than fAmp += digit.fAmp ; + if(fTime > digit.fTime) + fTime = digit.fTime ; Int_t max1 = fNprimary ; Int_t max2 = fNiparent ; @@ -234,7 +272,7 @@ ostream& operator << ( ostream& out , const AliEMCALDigit & digit) { // Prints the data of the digit - out << "ID " << digit.fId << " Energy = " << digit.fAmp << endl ; + out << "ID " << digit.fId << " Energy = " << digit.fAmp << " Time = " << digit.fTime << endl ; Int_t i,j ; for(i=0;i