// -*- mode: c++ -*- // // $Id: BrC1DigModule.h,v 1.1.1.1 2001/06/21 14:55:06 hagel Exp $ // $Author: hagel $ // $Date: 2001/06/21 14:55:06 $ #ifndef BRAT_BrC1DigModule #define BRAT_BrC1DigModule #ifndef BRAT_BrModule #include "BrModule.h" #endif #ifndef BRAT_BrEventNode #include "BrEventNode.h" #endif #ifndef BRAT_BrVector3D #include "BrVector3D.h" #endif #ifndef BRAT_BrPlane3D #include "BrPlane3D.h" #endif #ifndef BRAT_BrLine3D #include "BrLine3D.h" #endif #ifndef BRAT_BrGeantHit #include "BrGeantHit.h" #endif #ifndef BRAT_BrDetectorVolume #include "BrDetectorVolume.h" #endif class BrC1DigModule : public BrModule { private: BrVector3D fPmtPosition[32]; // PMT positions BrPlane3D* fTopMirrorPlane; // Top mirror plane in C1 c.s. BrPlane3D* fBotMirrorPlane; // Bot mirror plane in C1 c.s. BrPlane3D* fTopC1Plane; // Top C1 plane BrPlane3D* fBotC1Plane; // Bot C1 plane Double_t fMeanNoPhotons; // Np = C*L*(1 - beta2*n2) Int_t fNoPhotons; // Poisson distributed BrVector3D fPartPath; // Charged particle path Double_t fCosCkvAngle; // cosinus of Cerenkov angle (1/bn) Int_t fNoPhotoElectrons[32]; // photo_e- created in PMT Int_t fNoCollectedPhotons[32] ;// photo_e- created in PMT BrLine3D* fPhotonLine; // photon paths Int_t* fStruckMirror; // 0: no mirror, 1: top, 2: bot BrDetectorVolume* fC1Volume; // temp stuff (will be moved in DetectorParameter.txt or DB) Int_t fNoPmts; Double_t fPmtRadius; Double_t fGasRefractionIndex; Double_t fLightCollectEfficiency; Double_t fQuantumEfficiency; Double_t fMirrorReflectivity; Double_t fLambdaMin; // useful range of photon wavelength Double_t fLambdaMax; // here, I suppose that all PMTs have the same efficiencies // (strong assumption...) // I also suppose no absorption, scattering etc which is still unrealistic // private methods void SetGeometry(); // set useful geometry void GeneratePhotons(BrGeantHit*); // create initial photons void PropagatePhotons(); // propagate a photon through gas void ReflectPhoton(Int_t); // on mirror (used in Propagate) void CollectPmtLight(); // number of photons collected by PMT i public: BrC1DigModule(); BrC1DigModule(const Char_t* name, const Char_t* title); virtual ~BrC1DigModule () {} virtual void DefineHistograms(); virtual void Init(); virtual void Begin(); virtual void Event(BrEventNode*, BrEventNode*); virtual void End(); virtual void Finish(); virtual void Print(Option_t* option="B") const; // *MENU* // setters void SetGasRefractionIndex(Double_t gri = 1.00138) { fGasRefractionIndex = gri; } void SetLightCollectEfficiency(Double_t lce = 1) { fLightCollectEfficiency = lce; } void SetQuantumEfficiency(Double_t qe = 1) { fQuantumEfficiency = qe; } void SetMirrorReflectivity(Double_t mri = 1) { fMirrorReflectivity = mri; } void SetLambdaMin(Double_t lm = 3e-5) { fLambdaMin = lm; } void SetLambdaMax(Double_t lm = 4e-5) { fLambdaMax = lm; } // getters Double_t GetGasRefractionIndex() const { return fGasRefractionIndex; } Double_t GetLightCollectEfficiency() const { return fLightCollectEfficiency; } Double_t GetQuantumEfficiency() const { return fQuantumEfficiency; } Double_t GetMirrotReflectivity() const { return fMirrorReflectivity; } Double_t SetLambdaMin() const { return fLambdaMin; } Double_t SetLambdaMax() const { return fLambdaMax; } private: // histograms TList* fTracks; TList* fHits; TList* fCkv; ClassDef(BrC1DigModule,0) // }; #endif // // $Log: BrC1DigModule.h,v $ // Revision 1.1.1.1 2001/06/21 14:55:06 hagel // Initial revision of brat2 // // Revision 1.1 2001/06/19 12:55:35 ouerdane // Added class BrC1DigModule before the transition to brat2. // It still needs some debugging with the geometry manipulation but // compiles and works fine otherwise with geant simulation (cdat files) // //