X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONDigit.cxx;h=59aa9f2928fb4c5d5b38ce21bb2fa279d72d1ad9;hb=ec1be5d5872a0ddd42fe06dcff9ccfb8a8e30e5b;hp=46f1f8fbeb1aae196a41188ffa662df427a5dac3;hpb=76fa11137f19ea78de441b21eca87d26c1b0ee6c;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONDigit.cxx b/MUON/AliMUONDigit.cxx index 46f1f8fbeb1..59aa9f2928f 100644 --- a/MUON/AliMUONDigit.cxx +++ b/MUON/AliMUONDigit.cxx @@ -17,51 +17,95 @@ #include "AliMUONDigit.h" +#include "Riostream.h" +#include "TString.h" + +/// +/// A class representing a digit in the MUON spectrometer +/// either in tracking or trigger chambers. +/// +/// A digit holds the signal (proportional to a charge) on a pad +/// (or strip). +/// +/// This class is used to represent either sdigits (purely simulated digit, +/// with no electronic noise whatsoever) or digits (either real digits or +/// simulated ones but including electronic noise and de-calibration, to +/// closely ressemble real ones). +/// ClassImp(AliMUONDigit) + //_____________________________________________________________________________ - AliMUONDigit::AliMUONDigit(const AliMUONDigit& digits):TObject(digits) +AliMUONDigit::AliMUONDigit() +: +TObject(), +fDetElemId(-1), +fManuId(-1), +fManuChannel(-1), +fSignal(0), +fPadX(-1), +fPadY(-1), +fCathode(-1), +fADC(0), +fFlags(0), +fNtracks(0), +fTcharges(0x0), +fTracks(0x0), +fPhysics(0), +fHit(0) { -// copy constructor - - fPadX = digits.fPadX; - fPadY = digits.fPadY; - fCathode = digits.fCathode; - fSignal = digits.fSignal; - fPhysics = digits.fPhysics; - fHit = digits.fHit; - fDetElemId = digits.fDetElemId; - - for(Int_t i=0; i(digit)).Copy(*this); } + //_____________________________________________________________________________ AliMUONDigit::AliMUONDigit(Int_t *digits) +: TObject(), +fDetElemId(-1), +fManuId(-1), +fManuChannel(-1), +fSignal(0), +fPadX(-1), +fPadY(-1), +fCathode(-1), +fADC(0), +fFlags(0), +fNtracks(0), +fTcharges(0x0), +fTracks(0x0), +fPhysics(0), +fHit(0) + { // // Creates a MUON digit object to be updated + // \deprecated // fPadX = digits[0]; fPadY = digits[1]; @@ -70,13 +114,34 @@ AliMUONDigit::AliMUONDigit(Int_t *digits) fPhysics = digits[4]; fHit = digits[5]; fDetElemId = digits[6]; + fManuId = -1; + fManuChannel = -1; + fADC=0; + fFlags = 0; } + //_____________________________________________________________________________ AliMUONDigit::AliMUONDigit(Int_t *tracks, Int_t *charges, Int_t *digits) +: TObject(), +fDetElemId(-1), +fManuId(-1), +fManuChannel(-1), +fSignal(0), +fPadX(-1), +fPadY(-1), +fCathode(-1), +fADC(0), +fFlags(0), +fNtracks(0), +fTcharges(0x0), +fTracks(0x0), +fPhysics(0), +fHit(0) { - // - // Creates a MUON digit object - // + // + // Creates a MUON digit object + // + // \deprecated fPadX = digits[0]; fPadY = digits[1]; fCathode = digits[2]; @@ -84,46 +149,340 @@ AliMUONDigit::AliMUONDigit(Int_t *tracks, Int_t *charges, Int_t *digits) fPhysics = digits[4]; fHit = digits[5]; fDetElemId = digits[6]; - - for(Int_t i=0; i(obj); + + if ( DetElemId() > d->DetElemId() ) + { + return 1; + } + else if ( DetElemId() < d->DetElemId() ) + { + return -1; + } + else + { + if ( Signal() > d->Signal() ) + { + return 1; + } + else if ( Signal() < d->Signal() ) + { + return -1; } + else + { + if ( ManuId() < d->ManuId() ) + { + return 1; + } + else if ( ManuId() > d->ManuId() ) + { + return -1; + } + else + { + return ( ManuChannel() < d->ManuChannel() ) ? 1 : -1; + } + } + } +} - return *this; +//______________________________________________________________________________ +void +AliMUONDigit::Copy(TObject& obj) const +{ + // + // Copy this line to line. + // + TObject::Copy(obj); + AliMUONDigit& digit = static_cast(obj); + + digit.fDetElemId = fDetElemId; + digit.fManuId = fManuId; + digit.fManuChannel = fManuChannel; + digit.fSignal = fSignal; + + digit.fPadX = fPadX; + digit.fPadY = fPadY; + digit.fCathode = fCathode; + digit.fADC = fADC; + digit.fFlags = fFlags; + + digit.fNtracks = fNtracks; + + delete[] digit.fTcharges; + delete[] digit.fTracks; + + if ( fNtracks ) + { + digit.fTcharges = new Int_t[fNtracks]; + digit.fTracks = new Int_t[fNtracks]; + } + + for ( Int_t i=0; i d->DetElemId()) ? 1 : -1; +//_____________________________________________________________________________ +void +AliMUONDigit::SetElectronics(Int_t manuId, Int_t manuChannel) +{ + // + //FIXME: should we check that the values are ok here ?? + // + fManuId=manuId; + fManuChannel=manuChannel; +} + +//_____________________________________________________________________________ +Int_t +AliMUONDigit::Track(Int_t i) const +{ + // + // Return the i-th track number (if i is >=0 and < Ntracks()) or -1. + // + if ( i >= 0 && i < fNtracks ) + { + return fTracks[i]; + } + + return -1; +} + +//_____________________________________________________________________________ +Int_t +AliMUONDigit::TrackCharge(Int_t i) const +{ + // + // Return the i-th track charge (if i is >=0 and < Ntracjs()) or -1. + // + if ( i >= 0 && i < fNtracks ) + { + return fTcharges[i]; + } + return -1; }