// $Id: OpticsResponseBuilder.hh,v 1.2 2005/09/25 14:30:45 naumov Exp $ // Author: ale 2005/01/19 /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: OpticsResponseBuilder * * Package: * * Coordinator: * * * *****************************************************************************/ #ifndef __OPTICSRESPONSEBUILDER_HH__ #define __OPTICSRESPONSEBUILDER_HH__ #include "euso.hh" #include "EsafMsgSource.hh" #include #include class OpticalSystem; class IdealFocalSurface; class TH1F; class TH2F; class ParentPhoton; class EORSample; class EORHeader; class TClonesArray; class TFile; class TTree; //////////////////////////////////////////////////////////////////////////////// // // // OpticsResponseBuilder // // // // // // // //////////////////////////////////////////////////////////////////////////////// class OpticsResponseBuilder : public EsafMsgSource { public: OpticsResponseBuilder(); virtual ~OpticsResponseBuilder(); virtual void Clear(); inline void SetOpticalSystem( OpticalSystem* os) { fOpticalSystem = os; } inline void SetIdealFocalSurface( IdealFocalSurface* ifs ) { fIdealFocalSurface = ifs; } inline void SetDBName( const char* name ); void SetNrays( Int_t n ); inline void SetBins(Int_t k,Int_t n) { fBinsTheta = k; fBinsLambda = n;} inline void SetDiscRadius( Float_t r ) { fDiscRadius = r; } inline void SetEusoRadius( Float_t r ) { fEusoRadius = r; } inline void SetRmax( Float_t r ) { fRmax = r; } inline void SetTriggDiam( Float_t d ) { fTriggDiam = d; } inline OpticalSystem* GetOpticalSystem() const { return fOpticalSystem; } inline IdealFocalSurface* GetIdealFocalSurface() const { return fIdealFocalSurface; } inline const char *GetDBName() const { return fDBName.Data(); } inline Int_t GetNrays() const { return fNrays; } inline Float_t GetDiscRadius() const { return fDiscRadius; } inline Float_t GetEusoRadius() const { return fEusoRadius; } inline Float_t GetRmax() const { return fRmax; } inline Float_t GetTriggDiam() const { return fTriggDiam;} inline TH2F* GetPsf() { return fPsf; } inline TH2F* GetPsfZoom() { return fPsfZoom; } inline TH1F* GetPsfRProj() { return fPsfRProj; } void BuildEfficacyTables(); //protected: Bool_t ComputeEfficacy( Float_t th, Float_t ph, Float_t wl ); virtual void OpenDB(); virtual void CloseDB(); virtual void FillPsfHist(); private: TString fDBName; TFile* fDBFile; TTree* fDBTree; OpticalSystem* fOpticalSystem; // not own IdealFocalSurface* fIdealFocalSurface; // not own TH2F* fPsf; TH2F* fPsfZoom; TH1F* fPsfRProj; // event variables (needed?) Float_t fTotalEfficacy; Float_t fTriggEfficacy; Int_t fNrays; Float_t fThetaMin; Float_t fThetaMax; Float_t fLambdaMin; Float_t fLambdaMax; Int_t fBinsTheta; Int_t fBinsLambda; Int_t fPsfBins; Float_t fPsfZoomSide; TVector3 fCentroid; // parameters for light generation Float_t fDiscRadius; // entrance disc radius Float_t fEusoRadius; // detector radius Float_t fRmax; // maximum incident angle Float_t fTriggDiam; // bucket diameter for the trig // efficacy TClonesArray* fPoints; // intersections between photons // and focal surface ParentPhoton* fParent; EORSample* fSample; ClassDef(OpticsResponseBuilder,0) }; inline void OpticsResponseBuilder::SetDBName( const char* name ) { fDBName = name; if ( !fDBName.EndsWith(".root") ) fDBName.Append(".root"); } #endif /* __OPTICSRESPONSEBUILDER_HH__ */