PandaRoot
PndDisc.h
Go to the documentation of this file.
1 //-------------------------------------------------------------------------
2 // Author: Oliver Merle (Oliver.Merle@exp2.physik.uni-giessen.de)
3 // Changes: Mustafa Schmidt (Mustafa.A.Schmidt@physik.uni-giessen.de)
4 // Date: 30.11.2015
5 // Description: Disc DIRC Implementation for PandaRoot (Giessen)
6 //-------------------------------------------------------------------------
7 
8 #ifndef PNDDISC_HH
9 #define PNDDISC_HH
10 
11 // Subdetector specific
12 #include <PndDiscSensorMCPoint.h>
13 #include <PndDiscParticleMCPoint.h>
14 
15 // ROOT
16 #include <Rtypes.h>
17 #include <TLorentzVector.h>
18 
19 // FairRoot / PROOT
20 #include <FairDetector.h>
21 
22 // cpp
23 #include <set>
24 #include <string>
25 #include <map>
26 
27 class FairMCEventHeader;
28 
29 class PndDisc : public FairDetector {
30  public:
31  // ctor / dtor
32  PndDisc();
33  PndDisc(const char *name, Bool_t active, Int_t det_id = 0);
34  ~PndDisc();
35 
36  // interface - initialization
37  virtual void Initialize(); //* detector initialization
38 
39  // interface - geo (FairModule)
40  virtual void ConstructGeometry();
41  virtual void ConstructOpGeometry();
42 
43  // interface - transport (FairDetector)
44  virtual Bool_t ProcessHits(FairVolume *v = 0); //* called for each step during simulation (see FairMCApplication::Stepping())
45  // virtual void BeginPrimary(); // define actions at the beginning of the primary track (-> TVirtualMCApplication)
46  // virtual void FinishPrimary(); // define actions at the end of the primary track (-> TVirtualMCApplication)
47  virtual void BeginEvent(); // define actions at the beginning of the event (-> TVirtualMCApplication)
48  // virtual void FinishEvent(); // define actions at the end of the event (-> TVirtualMCApplication)
49  virtual void EndOfEvent(); //* called after FinishEvent() and after fRootManager->Fill() in FairMCApplication::FinishEvent (time to free the data in mem?)
50  virtual void PreTrack(); // define actions at the beginning of each track (-> TVirtualMCApplication)
51  virtual void PostTrack(); // define actions at the end of each track (-> TVirtualMCApplication)
52  // virtual void FinishRun(); // called after sim all events (gMC->ProcessRun(int)) (-> FairMCApplication::FinishRun)
53  // virtual void SetSpecialPhysicsCuts(); //
54 
55  virtual bool CheckIfSensitive(std::string name); // Fairroot uses this function to query sensitive volumes
56 
57  // interface - collections
58  virtual void Register(); //* register the produced collections in FAIRRootManager
59  virtual TClonesArray *GetCollection(Int_t iColl) const; //* return pointer to the produced collections **/
60  virtual void Reset(); //* reset containers (abstract in FairDetector)
61  // virtual void CopyClones( TClonesArray* cl1, TClonesArray* cl2 , Int_t offset);
62 
63  // --------------------------------
64  // Detector specific functionality:
65  // --------------------------------
66  void StorePhotonTracks(Bool_t bval);
67  void SetFilterInterval(Double_t const &wl_min_nm_, Double_t const &wl_max_nm_);
68 
69  private:
70  Bool_t store_photon_tracks;
71  Bool_t track_is_photon;
72  TLorentzVector old_momentum; // cache the photon momentum.
73 
74  TClonesArray *clarr_sensor_hits;
75  TClonesArray *clarr_photon_tracks;
76  TClonesArray *clarr_particle_tracks;
77 
78  // keep track of the number of entries. Looking in Roots GetEntriesFast
79  // makes you pulling your hair out.
80  int nextid_clarr_sensor_hits;
81  int nextid_clarr_photon_tracks;
82  int nextid_clarr_particle_tracks;
83 
84  FairMCEventHeader *ev_header;
85  std::map<int, std::pair<int, double>> last_track_occurence;
86  std::set<std::string> names_of_sensitive_volumes;
87  std::map<int, double> internal_reflection_angle_of_photons;
88  std::map<int, std::pair<TLorentzVector, TLorentzVector>> photons_entering_optics;
89 
90  int design_id;
91  Double_t wl_min_nm;
92  Double_t wl_max_nm;
93 
94  ClassDef(PndDisc, 1)
95 };
96 
97 #endif // PNDDISC_HH
virtual Bool_t ProcessHits(FairVolume *v=0)
virtual void Reset()
virtual void ConstructGeometry()
virtual TClonesArray * GetCollection(Int_t iColl) const
__m128 v
Definition: P4_F32vec4.h:3
virtual void ConstructOpGeometry()
virtual bool CheckIfSensitive(std::string name)
void StorePhotonTracks(Bool_t bval)
virtual void Initialize()
virtual void EndOfEvent()
virtual void PostTrack()
void SetFilterInterval(Double_t const &wl_min_nm_, Double_t const &wl_max_nm_)
virtual void Register()
virtual void BeginEvent()
virtual void PreTrack()