GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GammaTracker.h
Go to the documentation of this file.
1 #ifndef GW_GAMMATRACKER_H
2 #define GW_GAMMATRACKER_H
3 
4 #ifndef ROOT_Rtypes
5 #include "Rtypes.h"
6 #endif
7 
8 #ifndef ROOT_TNamed
9 #include "TNamed.h"
10 #endif
11 
12 
13 namespace Gw {
14 
29 class GammaTracker : public TNamed
30 {
31 private:
32  UInt_t MaxImpacts;
33 
34  Double_t DistFactor;
35  Double_t EnerFactor;
36 
37 protected:
38  UInt_t InputN;
39  Double_t *InputE;
40  Double_t *InputDE;
41 
42  Double_t *InputX;
43  Double_t *InputY;
44  Double_t *InputZ;
45  Double_t *InputDX;
46  Double_t *InputDY;
47  Double_t *InputDZ;
48 
49  UInt_t OutputN;
50  Double_t *OutputE;
51  Double_t *OutputTheta1;
52  Double_t *OutputPhi1;
53  Double_t *OutputTheta2;
54  Double_t *OutputPhi2;
55 
56 // Bool_t fDoPacking; // true if packing must be done (data comes from Geant)
57 // Bool_t fDoSmearing; // true if smearing must be done (data comes from Geant)
58 
59 public:
60  GammaTracker(const char *name = "GammaTracker", const char *title = "Base to track gamma-rays") ;
61  virtual ~GammaTracker();
62 
64  static bool Load(const char *classname, const char *pathtopackage, const char *libraryname);
65 
67 
70  static bool IsTracker(const char *classname) { return GetTracker(classname) != NULL; }
71 
73  /*
74  Trackers are external programs that should be linked. According to DAQ specifications, any tracking
75  algorithm must be compiled in a single dynamic library
76  */
77  static GammaTracker *GetTracker(const char *classname);
78 
80 
83  Double_t GetDistFactor() const { return DistFactor; }
84  Double_t GetEnerFactor() const { return EnerFactor; }
85 
86  virtual void SetDistFactor(Double_t f) { DistFactor = f; }
87  virtual void SetEnerFactor(Double_t f) { EnerFactor = f; }
88 
89  Double_t GetMaxImpacts() const { return MaxImpacts; }
90 
91 // virtual Int_t Expand(Int_t);
92 
93  virtual UInt_t GetInputN() const { return InputN; }
94  virtual const Double_t *GetInputE() const { return InputE; }
95  virtual const Double_t *GetInputDE() const { return InputDE;}
96  virtual const Double_t *GetInputX() const { return InputX; }
97  virtual const Double_t *GetInputY() const { return InputY; }
98  virtual const Double_t *GetInputZ() const { return InputZ; }
99  virtual const Double_t *GetInputDX() const { return InputDX; }
100  virtual const Double_t *GetInputDY() const { return InputDY; }
101  virtual const Double_t *GetInputDZ() const { return InputDZ; }
102 
104  /*
105  Energies and Positions are copied, multiplied by a factor to take into account the tracking may work with units
106  different from the ones given by the data flow.
107  */
108  virtual UInt_t SetEvent(UInt_t n, const Double_t *e, const Double_t *x, const Double_t *y, const Double_t *z, Double_t efactor = 1.0, Double_t pfactor = 1.0);
109 
110  void ShowCurrentEvent();
111 
112  virtual UInt_t GetOutputN() const { return OutputN; }
113  virtual const Double_t *GetOutputE() const { return OutputE; }
114  virtual const Double_t *GetOutputTheta1() const { return OutputTheta1; }
115  virtual const Double_t *GetOutputPhi1() const { return OutputPhi1; }
116  virtual const Double_t *GetOutputTheta2() const { return OutputTheta2; }
117  virtual const Double_t *GetOutputPhi2() const { return OutputPhi2; }
118 
119  virtual void SetPacking() {;}
120  virtual void SetSmearing() {;}
121 
123 
127  virtual Int_t DoTracking();
128 
130  ClassDef(GammaTracker,0); // Base class for tracking algorithms
131 };
132 
134 /*
135 Must be used in conjonction with SetInput(UInt_t i, Double_t ...)
136 */
137 // virtual UInt_t SetInput(UInt_t ninput) { InputN=(ninput>MaxImpacts)?MaxImpacts:ninput; return InputN; }
138 
139 /*
140 virtual void SetInput(UInt_t i, Double_t e, Double_t x, Double_t y, Double_t z, Double_t de = 0.0, Double_t dx = 0.0, Double_t dy = 0.0, Double_t dz = 0.0)
141 { if ( i > InputN && i < MaxImpacts ) {InputN=i+1; InputE[i]=e; InputDE[i]=de; InputX[i]=x; InputDX[i]=dx; InputY[i]=y; InputDY[i]=dy; InputZ[i]=z; InputDZ[i]=dz;} }
142 */
143 
144 }
145 #endif
146 
147 
148 
UInt_t OutputN
DZ positions.
Definition: GammaTracker.h:49
Double_t GetDistFactor() const
Internal unit system for lengths and energies.
Definition: GammaTracker.h:83
virtual void SetEnerFactor(Double_t f)
Definition: GammaTracker.h:87
virtual const Double_t * GetOutputTheta1() const
Definition: GammaTracker.h:114
virtual const Double_t * GetInputDZ() const
Definition: GammaTracker.h:101
Base class to build tracker families.
Definition: GammaTracker.h:29
virtual const Double_t * GetInputE() const
Definition: GammaTracker.h:94
Double_t GetEnerFactor() const
Definition: GammaTracker.h:84
Double_t * InputZ
Y positions.
Definition: GammaTracker.h:44
virtual Int_t DoTracking()
to track the gamma-rays
virtual const Double_t * GetInputDE() const
Definition: GammaTracker.h:95
virtual void SetSmearing()
Definition: GammaTracker.h:120
virtual const Double_t * GetInputZ() const
Definition: GammaTracker.h:98
virtual const Double_t * GetInputDX() const
Definition: GammaTracker.h:99
GammaTracker(const char *name="GammaTracker", const char *title="Base to track gamma-rays")
direction (phi) of the first scattered gamma-ray for polarisation
Double_t * OutputPhi2
direction (theta) of the first scattered gamma-ray for polarisation
Definition: GammaTracker.h:54
static GammaTracker * GetTracker(const char *classname)
Interface to get a new tracker.
Double_t * InputDY
DX positions.
Definition: GammaTracker.h:46
Double_t * OutputPhi1
incoming direction (theta) of the reconstructed gamma-rays
Definition: GammaTracker.h:52
Double_t GetMaxImpacts() const
Definition: GammaTracker.h:89
virtual const Double_t * GetOutputE() const
Definition: GammaTracker.h:113
static bool IsTracker(const char *classname)
To know if a tracker is already loaded.
Definition: GammaTracker.h:70
virtual void SetDistFactor(Double_t f)
Definition: GammaTracker.h:86
UInt_t InputN
Units for energies.
Definition: GammaTracker.h:38
virtual UInt_t SetEvent(UInt_t n, const Double_t *e, const Double_t *x, const Double_t *y, const Double_t *z, Double_t efactor=1.0, Double_t pfactor=1.0)
Double_t * OutputTheta1
energies of the reconstructed gamma-rays
Definition: GammaTracker.h:51
Double_t * InputY
X positions.
Definition: GammaTracker.h:43
virtual const Double_t * GetOutputTheta2() const
Definition: GammaTracker.h:116
virtual void SetPacking()
Definition: GammaTracker.h:119
virtual const Double_t * GetInputDY() const
Definition: GammaTracker.h:100
virtual const Double_t * GetOutputPhi2() const
Definition: GammaTracker.h:117
virtual UInt_t GetOutputN() const
Definition: GammaTracker.h:112
virtual UInt_t GetInputN() const
Definition: GammaTracker.h:93
static bool Load(const char *classname, const char *pathtopackage, const char *libraryname)
To load an interface to a particular tracker.
Double_t * OutputE
of reconstructed gamma-rays
Definition: GammaTracker.h:50
Double_t * InputDE
energies
Definition: GammaTracker.h:40
Double_t * InputE
of impacts
Definition: GammaTracker.h:39
Double_t * InputDZ
DY positions.
Definition: GammaTracker.h:47
virtual const Double_t * GetInputX() const
Definition: GammaTracker.h:96
virtual ~GammaTracker()
Double_t * InputX
errors on energies
Definition: GammaTracker.h:42
Double_t * InputDX
Z positions.
Definition: GammaTracker.h:45
virtual const Double_t * GetInputY() const
Definition: GammaTracker.h:97
virtual const Double_t * GetOutputPhi1() const
Definition: GammaTracker.h:115
Double_t * OutputTheta2
incoming direction (phi) of the reconstructed gamma-rays
Definition: GammaTracker.h:53
ClassDef(GammaTracker, 0)
Root dictionary related.