// ESAF : Euso Simulation and Analysis Framework // $Id: TestLightToEuso.hh,v 1.2 2005/04/14 12:43:24 moreggia Exp $ // M. Pallavicini created Sep, 16 2002 // This class brings test fPhotons to the Euso Pupil // The type of events supported are the following: // SPOT light from a single point at the same time // EXTSPOT light from a single point at the same time // RANDSPOT single point randomly chosen // CIRCLE light making a circle in focal surface (theta constant, phi 0-360 degrees) // EXTCIRCLE light making a thick circle in focal surface (theta constant, phi 0-360 degrees) // RADIUS light making a radius (phi constant, theta 0-30 degrees) // TRACK light making a track in focal surface with peaked pattern // // The parameters needed are the following: // TestLightToEuso.Type see above // TestLightToEuso.Duration event duration in micro-seconds // TestLightToEuso.Photons number of fPhotons generated per event // TestLightToEuso.Theta1 constant if CIRCLE, SPOT or EXTSPOT, // starting point if EXTCIRCLE, RADIUS or TRACK // TestLightToEuso.Theta2 ignored if CIRCLE, SPOT or EXTSPOT, // end point if RADIU, EXTCIRCLE or TRACK // TestLightToEuso.Phi1 starting point if CIRCLE, EXTCIRCLE or TRACK, // constant if RADIUS, SPOT or EXTSPOT // TestLightToEuso.Phi2 end point if CIRCLE, EXTCIRCLE or TRACK, ignored if RADIUS // or SPOT, radius of the beam in EXTSPOT #ifndef __TEST_LIGHTTOEUSO_HH__ #define __TEST_LIGHTTOEUSO_HH__ #include "euso.hh" #include "LightToEuso.hh" #include "ParentPhoton.hh" #include "Config.hh" class ListPhotonsOnPupil; class PhysicsData; class TestLightToEuso : public LightToEuso { public: // ctor TestLightToEuso(); // dtor virtual ~TestLightToEuso(); // returns the list of fPhotons for the pupil virtual PhotonsOnPupil *Get(const DetectorGeometry*); // next functions not meaningful in this case virtual void Configure() { return; } virtual MCTruth* GetTruth() { return fTruth; } virtual PhysicsData* GetPhysics() { return NULL; } virtual void ReplaceInputFile(const char*) { return; } EsafConfigClass(LightToEuso,TestLightToEuso) private: // produce light in a single spot PhotonsOnPupil *MakeSpot(const Double_t& th, const Double_t& ph, Int_t nPhotons, const Double_t& tm); // produce light in a circle with theta=th and phi between ph1 and ph2. PhotonsOnPupil *MakeCircle(const Double_t& ph1, const Double_t& ph2, const Double_t& th, Int_t nPhotons, const Double_t& tm); // produce light in a circle with theta between th1 and th2 and phi between ph1 and ph2. PhotonsOnPupil *MakeExtCircle(const Double_t& ph1, const Double_t& ph2, const Double_t& th1, const Double_t th2, Int_t nPhotons, const Double_t& tm); // produce light in a single spot PhotonsOnPupil *MakeRadius(const Double_t& ph, const Double_t& th1, const Double_t& th2, Int_t nPhotons, const Double_t& tm); // produce light in a single spot PhotonsOnPupil *MakeTrack(const Double_t& ph1, const Double_t& ph2, const Double_t& th1, const Double_t& th2, Int_t nPhotons, const Double_t& tm); //produce light in an extensive spot PhotonsOnPupil *MakeExtSpot(const Double_t& th1, const Double_t& ph1, const Double_t rad, Int_t nPhotons, const Double_t& tm); //produce diffuse light PhotonsOnPupil *MakeDiffuse(const Double_t& th1, const Double_t& th2, const Double_t rad, Int_t nPhotons, const Double_t& tm); //produce diffuse light (constant flux) PhotonsOnPupil *MakeCFluxDiffuse(const Double_t& th1, const Double_t& th2, const Double_t rad, Int_t nPhotons, const Double_t& tm); //showertrack PhotonsOnPupil *MakeShowerTrack(); void Reset(); ListPhotonsOnPupil* fPhOnPupil; MCTruth* fTruth; ClassDef(TestLightToEuso,0) }; #endif /* __TEST_LIGHTTOEUSO_HH__ */