X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRD.h;h=d2c4b94a87bcbb4a890407cf8cd83798d1174ca3;hb=d0d4a6b3605882d26153d05532bddfb603621db7;hp=e4bcd8a09854d018efe35f448c5122a86fe48c95;hpb=5c7f4665d9b37f3534ce39a26c13eef352126470;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRD.h b/TRD/AliTRD.h index e4bcd8a0985..d2c4b94a87b 100644 --- a/TRD/AliTRD.h +++ b/TRD/AliTRD.h @@ -1,5 +1,5 @@ -#ifndef TRD_H -#define TRD_H +#ifndef ALITRD_H +#define ALITRD_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ @@ -8,151 +8,116 @@ //////////////////////////////////////////////// // Manager and hits classes for set: TRD // //////////////////////////////////////////////// - -#include "AliDetector.h" -#include "AliHit.h" -#include "AliDigit.h" -#include "AliTRDconst.h" - -//_____________________________________________________________________________ -class AliTRD : public AliDetector { - -protected: - Int_t fGasMix; // Gas mixture. 0: Xe/Isobutane 1: Xe/CO2 - Float_t fClengthI[kNplan]; // Length of the inner chambers - Float_t fClengthM1[kNplan]; // Length of the middle chambers - Float_t fClengthM2[kNplan]; // - Float_t fClengthO1[kNplan]; // Length of the outer chambers - Float_t fClengthO2[kNplan]; // - Float_t fClengthO3[kNplan]; // - Float_t fCwidth[kNplan]; // Width of the chambers +#include +#include "AliDetector.h" +#include - Int_t fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows - Int_t fColMax[kNplan]; // Number of pad-columns - Int_t fTimeMax; // Number of time buckets +class TFile; +class TLorentzVector; - Float_t fRow0[kNplan][kNcham][kNsect]; // Row-position of pad 0 - Float_t fCol0[kNplan]; // Column-position of pad 0 - Float_t fTime0[kNplan]; // Time-position of pad 0 +class AliRun; +class AliDigit; - Float_t fRowPadSize; // Pad size in z-direction - Float_t fColPadSize; // Pad size in rphi-direction - Float_t fTimeBinSize; // Size of the time buckets +class AliTRDhit; +class AliTRDsim; +class AliTRDgeometry; +class AliTRDtrackHits; - Int_t fHole; // Geometry without (0) / with (1) hole +//_____________________________________________________________________________ +class AliTRD : public AliDetector { - TClonesArray *fClusters; // List of clusters - Int_t fNclusters; // Number of clusters + public: -public: AliTRD(); AliTRD(const char *name, const char *title); - virtual ~AliTRD(); - virtual void AddHit(Int_t, Int_t*, Float_t*); - virtual void AddDigit(Int_t*, Int_t*); - virtual void AddCluster(Int_t*, Int_t*, Float_t*); - virtual void BuildGeometry(); - virtual void CreateGeometry(); - virtual void CreateMaterials(); - virtual void DrawModule(); - Int_t DistancetoPrimitive(Int_t px, Int_t py); - TClonesArray *Cluster() { return fClusters; }; - virtual void Init(); - virtual Int_t IsVersion() const = 0; - virtual void MakeBranch(Option_t* option); - virtual void StepManager() = 0; - virtual void SetTreeAddress(); - - virtual void SetHits(Int_t ) {}; - virtual void SetSensPlane(Int_t) {}; - virtual void SetSensChamber(Int_t) {}; - virtual void SetSensSector(Int_t ) {}; - - virtual void SetGasMix(Int_t imix = 0); - - virtual void SetRowPadSize(Float_t size) { fRowPadSize = size; }; - virtual void SetColPadSize(Float_t size) { fColPadSize = size; }; - virtual void SetTimeBinSize(Float_t size) { fTimeBinSize = size; }; - - virtual Float_t GetRowPadSize() { return fRowPadSize; }; - virtual Float_t GetColPadSize() { return fColPadSize; }; - virtual Float_t GetTimeBinSize() { return fTimeBinSize; }; - - virtual Int_t GetRowMax(Int_t p, Int_t c, Int_t s) { return fRowMax[p-1][c-1][s-1]; }; - virtual Int_t GetColMax(Int_t p) { return fColMax[p-1]; }; - virtual Int_t GetTimeMax() { return fTimeMax; }; - - virtual Int_t Hole() { return fHole; }; - - ClassDef(AliTRD,1) // Transition Radiation Detector base class - -}; - -//_____________________________________________________________________________ -class AliTRDhit : public AliHit { - -public: - Int_t fSector; // TRD sector number - Int_t fChamber; // TRD chamber number - Int_t fPlane; // TRD plane number - Float_t fQ; // Charge created by a hit (slow simulator only) - -public: - AliTRDhit() {} - AliTRDhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits); - virtual ~AliTRDhit() {}; + AliTRD(const AliTRD &trd); + virtual ~AliTRD(); + + AliTRD &operator=(const AliTRD &trd); + + virtual void AddHit(Int_t track, Int_t det, Float_t *hits, Int_t q, Bool_t inDrift); + virtual void AddCluster(Float_t *pos, Int_t det, Float_t amp, Int_t *tracks + , Float_t *sig, Int_t iType); + virtual void BuildGeometry(); + virtual void Copy(TObject &trd); + virtual void CreateGeometry(); + virtual void CreateMaterials(); + virtual void DrawModule() const; + Int_t DistancetoPrimitive(Int_t px, Int_t py) const; + virtual void LoadPoints(Int_t track); + TObjArray *RecPoints() const { return fRecPoints; }; + virtual void Init(); + virtual Int_t IsVersion() const = 0; + virtual void MakeBranch(Option_t* option); + virtual void ResetDigits(); + virtual void ResetRecPoints(); + virtual void StepManager() = 0; + virtual void SetTreeAddress(); + + virtual void SetGasMix(Int_t imix = 0); + virtual void SetHits() {}; + virtual void SetPHOShole(); + virtual void SetRICHhole(); + virtual void SetDrawTR(Int_t idraw = 1) { fDrawTR = idraw; }; + virtual void SetDisplayType(Int_t type = 0) { fDisplayType = type; }; + + AliTRDgeometry *GetGeometry() const { return fGeometry; }; + + virtual void SetSensChamber(Int_t ichamber) = 0; + virtual void SetSensPlane(Int_t iplane) = 0; + virtual void SetSensSector(Int_t isector) = 0; + virtual void SetSensSector(Int_t isector, Int_t nsector) = 0; + + virtual void SetHitTypeStandard() { fHitType = 1; }; + virtual void SetHitTypeCompressed() { fHitType = 2; }; + virtual void SetHitTypeBoth() { fHitType = 3; }; + + virtual Int_t GetSensChamber() const = 0; + virtual Int_t GetSensPlane() const = 0; + virtual Int_t GetSensSector() const = 0; + virtual Int_t GetSensSectorRange() const = 0; - ClassDef(AliTRDhit,1) // Hits for Transition Radiation Detector + virtual void Hits2Digits(); + virtual void Hits2SDigits(); + virtual void SDigits2Digits(); -}; + virtual AliTRDsim *CreateTR() = 0; + virtual AliTRDsim *GetTR() const = 0; -//_____________________________________________________________________________ -class AliTRDdigit : public AliDigit { + virtual void MakeBranch2(Option_t *opt=" ", const char *file=0); + virtual void SetTreeAddress2(); + virtual void AddHit2(Int_t track, Int_t det, Float_t *hits, Int_t q, Bool_t inDrift); + virtual void ResetHits(); -public: - Int_t fSector; // TRD sector number - Int_t fChamber; // TRD chamber number - Int_t fPlane; // TRD plane number - Int_t fRow; // Pad row number - Int_t fCol; // Pad col number - Int_t fTime; // Time bucket - Int_t fSignal; // Signal amplitude + virtual AliHit* FirstHit(Int_t track); + virtual AliHit* NextHit(); + virtual AliHit* FirstHit2(Int_t track); + virtual AliHit* NextHit2(); -public: - AliTRDdigit() {}; - AliTRDdigit(Int_t *tracks, Int_t *digits); - virtual ~AliTRDdigit() {}; + virtual void FinishPrimary(); + virtual void RemapTrackHitIDs(Int_t *map); - ClassDef(AliTRDdigit,1) // Digits for Transition Radiation Detector + protected: -}; - -//_____________________________________________________________________________ -class AliTRDcluster : public TObject { + Int_t fGasMix; // Gas mixture. 0: Xe/Isobutane 1: Xe/CO2 -public: - Int_t fSector; // TRD sector number - Int_t fChamber; // TRD chamber number - Int_t fPlane; // TRD plane number + AliTRDgeometry *fGeometry; // The TRD geometry - Int_t fTimeSlice; // Timeslice in chamber where cluster has been found - Int_t fEnergy; // Charge sum of this cluster + TObjArray *fRecPoints; // Array of reconstructed points / cluster + Int_t fNRecPoints; //! Number of reconstructed points / cluster - Float_t fX; // X coord in ALICE reference frame - Float_t fY; // Y coord in ALICE reference frame - Float_t fZ; // Z coord in ALICE reference frame + Float_t fGasDensity; // The density of the drift gas + Float_t fFoilDensity; // The density of the entrance window foil - Int_t fTracks[3]; // Track information + Int_t fDrawTR; // Switches marking the TR photons in the display + Int_t fDisplayType; // Display type (0: normal, 1: detailed) -public: - AliTRDcluster() {}; - AliTRDcluster(Int_t *tracks, Int_t *cluster, Float_t *pos); - virtual ~AliTRDcluster() {}; - inline virtual Int_t *GetTracks() { return &fTracks[0]; } + AliTRDtrackHits *fTrackHits; //! Compressed hits for a given track + Int_t fHitType; // Switch for the different hit data structures - ClassDef(AliTRDcluster,1) // Cluster for Transition Radiation Detector + ClassDef(AliTRD,6) // Transition Radiation Detector base class };