-#ifndef PHOS_H
-#define PHOS_H
-////////////////////////////////////////////////
-// Manager and hits classes for set:PHOS //
-////////////////////////////////////////////////
-
-// --- ROOT system ---
-#include <TArray.h>
-#include <TRandom.h>
-#include <TH2.h>
-#include <TVector3.h>
-
-// --- 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);