X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOS.h;h=f1ce3c4732390abcec58350c978176882f342e2c;hb=40e62b79a9a450e2be559df25c3105fea66c2e9a;hp=1234290b2f9bfe7a7edcb7bbe158e81d0b4b9449;hpb=bc9ab547f589d8eed1f3d3c36f7c95625644d472;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOS.h b/PHOS/AliPHOS.h index 1234290b2f9..f1ce3c47323 100644 --- a/PHOS/AliPHOS.h +++ b/PHOS/AliPHOS.h @@ -1,255 +1,113 @@ -#ifndef PHOS_H -#define PHOS_H -//////////////////////////////////////////////// -// Manager and hits classes for set:PHOS // -//////////////////////////////////////////////// - -// --- ROOT system --- -#include -#include -#include -#include - -// --- galice header files --- -#include "AliDetector.h" -#include "AliHit.h" -#include "AliRun.h" - -class AliPHOSgamma : public TObject { - - public: - virtual ~AliPHOSgamma(void) {} - AliPHOSgamma(void) {} - AliPHOSgamma(const AliPHOSgamma &g) { *this=g; } - AliPHOSgamma(Float_t X, Float_t Y, Float_t E, - Float_t Px, Float_t Py, Float_t Pz, - Int_t Ipart) : - fX(X), fY(Y), fE(E), - fPx(Px), fPy(Py), fPz(Pz), - fIpart(Ipart) - {} - - Float_t fX; // cm. x-coordinate (in beam direction) - Float_t fY; // cm. y-coordinate (around beam) - - Float_t fE; // GeV. energy - - Float_t fPx; // GeV. Gamma momentum Px - Float_t fPy; // GeV. Gamma momentum Py - Float_t fPz; // GeV. Gamma momentum Pz - - Int_t fIpart; // Current particle number (GEANT particle code) - - void Print(Option_t *options=NULL); - AliPHOSgamma &operator=(const AliPHOSgamma &g); - - private: - - ClassDef(AliPHOSgamma,1) // Gamma particle in PHOS cradle -}; - -//______________________________________________________________________________ - -class AliPHOShit : public AliHit { - -public: - Int_t fVolume[5]; //array of volumes - Float_t fELOS; //ELOS - -public: - AliPHOShit() {} - AliPHOShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits); - virtual ~AliPHOShit() {} - - ClassDef(AliPHOShit,1) //Hits object for set:PHOS -}; - -//______________________________________________________________________________ - - -class AliPHOSCradle : public TObject { - - public: - - virtual ~AliPHOSCradle(void); - AliPHOSCradle(void); - AliPHOSCradle(int Geometry , - float CrystalSideSize , - float CrystalLength , - float WrapThickness , - float AirThickness , - float PIN_SideSize , - float PIN_Length , - float Radius , - float CPV_Thickness , - float CPV_PHOS_Distance , - int Nz , - int Nphi , - float Angle ); - - void AddCPVHit(float x, float y); - - Float_t GetCrystalSideSize (void) const {return fCrystalSideSize;} - Float_t GetCellSideSize (void) const {return fCrystalSideSize+2*fWrapThickness+2*fAirThickness;} - Float_t GetCrystalLength (void) const {return fCrystalLength;} - Float_t GetWrapThickness (void) const {return fWrapThickness;} - Float_t GetAirThickness (void) const {return fAirThickness;} - Float_t GetPIN_SideSize (void) const {return fPIN_SideSize;} - Float_t GetPIN_Length (void) const {return fPIN_Length;} - Float_t GetRadius (void) const {return fRadius;} - Float_t GetCPV_PHOS_Distance (void) const {return fCPV_PHOS_Distance;} - Float_t GetCPV_Thikness (void) const {return fCPV_Thickness;} - Int_t GetNz (void) const {return fNz;} - Int_t GetNphi (void) const {return fNphi;} - Float_t GetPhi (void) const {return fPhi;} - - void Clear(Option_t *opt=""); // Clear all data. - void Print(Option_t *opt=""); - void Distortion(const TH2F *Noise=NULL, const TH2F *Stochastic=NULL, const TH2F *Calibration=NULL); - TH2F *CreateHistForDistortion(const char *name, const char *title, Int_t Nx, Int_t Ny, - Float_t MU_mu, Float_t MU_sigma, Float_t SIGMA_mu, Float_t SIGMA_sigma); - Float_t GetDistortedValue(const TH2F *h, UInt_t n); - - void Reconstruction(Float_t signal_step, UInt_t min_signal_reject); - - void GetXY(const TVector3 &p,const TVector3 &v,float R,float &x,float &y,float &l) const; - - TObjArray &GetGammasReconstructed (void) {return fGammasReconstructed;} - TObjArray &GetParticles (void) {return fParticles;} - - TH2F fCellEnergy; // GeV. Energy in cells - TH2S fChargedTracksInPIN; // amount. hits in PIN +#ifndef ALIPHOS_H +#define ALIPHOS_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ +/* $Id$ */ + +/* History of cvs commits: + * + * $Log$ + * Revision 1.73 2007/08/07 14:12:03 kharlov + * Quality assurance added (Yves Schutz) + * + * Revision 1.72 2007/02/13 10:52:08 policheh + * Raw2SDigits() implemented + * + * Revision 1.71 2007/02/05 10:43:25 hristov + * Changes for correct initialization of Geant4 (Mihaela) + * + * Revision 1.70 2007/01/17 17:28:56 kharlov + * Extract ALTRO sample generation to a separate class AliPHOSPulseGenerator + * + * Revision 1.69 2006/11/14 17:11:15 hristov + * Removing inheritances from TAttLine, TAttMarker and AliRndm in AliModule. The copy constructor and assignment operators are moved to the private part of the class and not implemented. The corresponding changes are propagated to the detectors + * + * Revision 1.68 2006/08/11 12:36:25 cvetan + * Update of the PHOS code needed in order to read and reconstruct the beam test raw data (i.e. without an existing galice.root) + * + * Revision 1.67 2006/04/07 08:42:00 hristov + * Follow AliAlignObj framework and remove AliPHOSAlignData (Yu.Kharlov) + * + * Revision 1.66 2006/03/24 21:39:33 schutz + * Modification needed to include PHOS in the global trigger framework + * + * Revision 1.65 2006/03/07 18:56:25 kharlov + * CDB is passed via environment variable + * + * Revision 1.64 2005/11/03 13:09:19 hristov + * Removing meaningless const declarations (linuxicc) + * + * Revision 1.63 2005/07/26 13:32:39 kharlov + * Restoring raw data fit from version of 29-Aug-2004 + * + * Revision 1.62 2005/07/06 10:10:32 hristov + * Moving the functions used to initialize TF1 and TF2 to the pivate part of the class + * + * Revision 1.61 2005/05/28 12:10:07 schutz + * Copy constructor is corrected (by T.P.) + * + */ + + +//_________________________________________________________________________ +// Base Class for PHOS +// +//*-- Author: Laurent Aphecetche & Yves Schutz (SUBATECH) - TArrayF fCPV_hitsX; // cm. X-hits in CPV detector. (0 - cradle center) - TArrayF fCPV_hitsY; // cm. Y-hits in CPV detector. (0 - cradle center) - private: - - Int_t fGeometry; // Geometry type: 1 or 2 - Float_t fCrystalSideSize; // cm. - Float_t fCrystalLength; // cm. - Float_t fWrapThickness; // cm. - Float_t fAirThickness; // cm. - Float_t fPIN_SideSize; // cm. - Float_t fPIN_Length; // cm. - - Float_t fRadius; // cm. Distance to PHOS - - Float_t fCPV_PHOS_Distance; // cm. Distance from CPV to PHOS. - Float_t fCPV_Thickness; // cm. CPV thikness. - - Int_t fNz; // Cells amount in beam direction - Int_t fNphi; // Cells amount around beam - - Float_t fPhi; // degree. Position of CRADLE center - - TObjArray fGammasReconstructed; // List of reconstructed gammas - TObjArray fParticles; // List of particles in the direction of this cradle - - TRandom r; //! Random number class, do not stream - -// friend class AliPHOS; - - ClassDef(AliPHOSCradle,1) // PHOS cradle -}; +// --- ROOT system --- +class TString ; +class TFolder ; +class TTree ; +class TRandom ; + +// --- AliRoot header files --- +#include "AliDetector.h" +#include "AliLog.h" +#include "AliPHOSGeometry.h" +#include "AliPHOSTrigger.h" +class AliPHOSCalibData ; class AliPHOS : public AliDetector { - public: - - enum {CradlesBranch_Bit=1}; - - AliPHOS(); - AliPHOS(const char *name, const char *title); - virtual ~AliPHOS(); - virtual void AddHit(Int_t, Int_t*, Float_t*); - virtual void BuildGeometry(); - virtual void CreateGeometry() {} - virtual void CreateMaterials(); - Int_t DistancetoPrimitive(Int_t px, Int_t py); - void FinishEvent(void); - - virtual void Init(); - virtual Int_t IsVersion() const =0; - void MakeBranch(Option_t *option); - void SetTreeAddress(void); - void FinishRun(void); - void ResetDigits(void); - void Print(Option_t *opt=""); - AliPHOSCradle *GetCradleOfTheParticle(const TVector3 &p,const TVector3 &v) const; - AliPHOSCradle &GetCradle(int n) {return *(AliPHOSCradle*)fCradles->operator[](n);} - // AliPHOSCradle &GetCradle(int n) {return *((AliPHOSCradle*) (*fCradles)[n]) ;} - void Reconstruction(Float_t signal_step, UInt_t min_signal_reject); - virtual void SetFlags(Float_t p1,Float_t p2=0,Float_t p3=0,Float_t p4=0, - Float_t p5=0,Float_t p6=0,Float_t p7=0,Float_t p8=0,Float_t p9=0); - virtual void SetCell(Float_t p1,Float_t p2=0,Float_t p3=0,Float_t p4=0, - Float_t p5=0,Float_t p6=0,Float_t p7=0,Float_t p8=0,Float_t p9=0); - virtual void SetRadius(Float_t radius); - virtual void SetCradleSize(Int_t nz, Int_t nphi, Int_t ncradles); - virtual void SetCradleA(Float_t angle); - virtual void SetCPV(Float_t p1,Float_t p2=0,Float_t p3=0,Float_t p4=0, - Float_t p5=0,Float_t p6=0,Float_t p7=0,Float_t p8=0,Float_t p9=0); - virtual void SetExtra(Float_t p1,Float_t p2=0,Float_t p3=0,Float_t p4=0, - Float_t p5=0,Float_t p6=0,Float_t p7=0,Float_t p8=0,Float_t p9=0); - virtual void SetTextolitWall(Float_t dx, Float_t dy, Float_t dz); - virtual void SetInnerAir(Float_t dx, Float_t dy, Float_t dz); - virtual void SetFoam(Float_t dx, Float_t dy, Float_t dz, Float_t dr); - virtual void StepManager()=0; - virtual void DefPars(); - virtual void AddPHOSCradles(); - - - - virtual Int_t GetPHOS_IDTMED_PbWO4 (void){return gAlice->Idtmed()[700-1];} - virtual Int_t GetPHOS_IDTMED_CPV (void){return gAlice->Idtmed()[701-1];} - virtual Int_t GetPHOS_IDTMED_Al (void){return gAlice->Idtmed()[702-1];} - virtual Int_t GetPHOS_IDTMED_Tyvek (void){return gAlice->Idtmed()[703-1];} - virtual Int_t GetPHOS_IDTMED_PIN (void){return gAlice->Idtmed()[706-1];} - virtual Int_t GetPHOS_IDTMED_AIR (void){return gAlice->Idtmed()[799-1];} - - - virtual Int_t &GetPHOS_Ndiv_magic (void) {return PHOS_Ndiv_magic;} - virtual Float_t GetCrystalSideSize (void) const {return PHOScell[0]; } - virtual Float_t GetCrystalLength (void) const {return PHOScell[1]; } - virtual Float_t GetWrapThickness (void) const {return PHOScell[2]; } - virtual Float_t GetAirThickness (void) const {return PHOScell[3]; } - virtual Float_t GetPIN_SideSize (void) const {return PHOScell[4]; } - virtual Float_t GetPIN_Length (void) const {return PHOScell[5]; } - virtual Float_t GetRadius (void) const {return PHOSradius; } - virtual Float_t GetCPV_Thickness (void) const {return PHOSCPV[0]; } - virtual Float_t GetCPV_PHOS_Distance (void) const {return PHOSCPV[1]; } - virtual Int_t GetNz (void) const {return PHOSsize[0]; } - virtual Int_t GetNphi (void) const {return PHOSsize[1]; } - virtual Int_t GetCradlesAmount (void) const {return PHOSsize[2]; } - virtual Float_t GetAngleBetweenCradles(void) const {return PHOScradlesA;} - virtual Float_t GetPHOS_flag (Int_t n) const {return PHOSflags[n];} - virtual Float_t GetPHOSextra (Int_t n) const {return PHOSextra[n];} - virtual Float_t GetPHOSFoam (Int_t n) const {return PHOSFTI[n];} - virtual Float_t GetPHOStxwall (Int_t n) const {return PHOSTXW[n];} - virtual Float_t GetPHOSAir (Int_t n) const {return PHOSAIR[n];} - virtual Float_t &GetCradleAngle (Int_t n) {return PHOSangle[n];} - - - TObjArray *fCradles; //! Cradles in PHOS - Int_t fDebugLevel; - - TTree *fTreePHOS; //! Pointer to PHOS tree. - -private: - - TString fBranchNameOfCradles; // - TString fTreeName; // Name of PHOS tree: "PHOS" - -#define MAXCRAD 100 - - Float_t PHOSflags[9], PHOScell[9], PHOSradius, PHOSCPV[9]; - Int_t PHOSsize[3]; - Float_t PHOScradlesA,PHOSTXW[3],PHOSAIR[3],PHOSFTI[4],PHOSextra[9], - PHOSangle[MAXCRAD]; - Int_t PHOS_Ndiv_magic; - - ClassDef(AliPHOS,1) //Hits manager for set:PHOS -}; - -#endif +public: + AliPHOS() ; + AliPHOS(const char* name, const char* title="") ; + virtual ~AliPHOS() ; + virtual void AddHit(Int_t, Int_t*, Float_t *) { + // do not use this definition but the one below + AliFatal(Form("do not use")) ; + + } + virtual void AddHit( Int_t shunt, Int_t primary, Int_t track, + Int_t id, Float_t *hits ) = 0 ; + virtual AliDigitizer* CreateDigitizer(AliDigitizationInput* digInput) const; + virtual void CreateMaterials() ; + virtual void Digits2Raw(); + virtual Bool_t Raw2SDigits(AliRawReader* rawReader); + virtual void FinishRun() {;} + virtual AliPHOSGeometry * GetGeometry() const + {return AliPHOSGeometry::GetInstance(GetTitle(),"") ; } + + virtual void Hits2SDigits(); + virtual Int_t IsVersion(void) const = 0 ; + virtual void Init(); + virtual AliTriggerDetector* CreateTriggerDetector() const + { return new AliPHOSTrigger(); } + + virtual AliLoader* MakeLoader(const char* topfoldername); + virtual void SetTreeAddress(); + virtual const TString Version() const {return TString(" ") ; } + + private: + AliPHOS(AliPHOS & phos); + AliPHOS & operator = (const AliPHOS & /*rvalue*/); + + protected: + AliPHOSCalibData * fgCalibData ; //! Pointer to Calibration DB + + ClassDef(AliPHOS,6) // Photon Spectrometer Detector (base class) +} ; + +#endif // ALIPHOS_H