ROAst
 All Classes Functions Variables Enumerations
roast.h
1 #include <vector>
2 #include <utility>
3 #include <string>
4 #include <stdexcept>
5 #include <ctime>
6 // ROOT includes
7 //#include "TFile.h"
8 //#include "TTree.h"
9 
10 #include "TFile.h"
11 #include "TTree.h"
12 
13 namespace ROAst {
14 
15 typedef std::runtime_error GeneralException;
16 
17 //-----------------------------Astro-Catalogue----------------------------------
18 
19 
20 struct EqAstCoord
21 {
22  double RA;
23  double Decl;
25 };
26 
27 struct GalactiCoord
28 {
29  double AstLat;
30  double AstLong;
31 };
32 
33 struct GeoCoord
34 {
35  double GeoLat;
36  double GeoLong;
37  tm GeoTime;
38 };
39 
41 {
42 public:
45  virtual ~ConvertToGeoCoord() ;
49 };
50 
52 {
53 public:
62 };
63 
65 {
66  double Lambda;
67  double Magnitude;
68 };
69 
70 
71 struct AstroObject
72 {
73  EqAstCoord Position;
74  std::vector<SpectralMagnitude> MaxMagnitudes;
75  std::vector<SpectralMagnitude> MinMagnitudes;
76  double MaxColor;
77  double MinColor;
78  enum ObjectType {ARTEFACT = 4, PLANET = 3, NEBULA = 2, GALAXY = 1, STAR = 0};
79  double MaxRedShift;
80  double MinRedShift;
81 };
82 
83 
84 class Catalogue
85 {
86 protected:
87 
88  std::string CatalogueFile;
89  fitsfile FitsImg;
91 public:
92 
93  std::vector<AstroObject> Container;
95  Catalogue() ;
98  Catalogue(std::string const &filename);
100  Catalogue(fitsfile const &fitsimg);
102  virtual ~Catalogue() ;
106 };
107 
108 //-----------------------------------Regions---------------------------------------------------
109 
110 class Region
111 {
112 protected:
113  EqAstCoord Centre;
115 public:
116 
117  Region(EqAstCoord centre);
119  virtual ~Region() ;
121  EqAstCoord GetRegCentre() const;
122  void SetRegCentre(EqAstCoord centre);
125  virtual void WriteRegion(std::string const &file) = 0;
126  virtual std::vector<AstroObject> GetInObjects( AstroObject const &filter) const = 0 ;
127  virtual bool ExecuteEvent(AstroObject const &ConditionObject) const = 0 ;
128  virtual void PopulateRegion() = 0 ;
129  virtual void Clear() = 0;
130  virtual std::string GetRegionShape() const = 0;
133 };
134 
135 //------------------------------------------------------------------------------------------
136 
137 class Ellipse : public Region
138 {
139 protected:
140  EqAstCoord RMaxExtent;
141  double RMinExtent;
142  std::string RegionShape;
144 public:
145  std::vector<AstroObject> EllipseContainer;
148  Ellipse(EqAstCoord rmaxextent, double rminextent);
150  virtual ~Ellipse() ;
152  virtual void WriteRegion(std::string &file) const;
154  EqAstCoord GetRegRMaxExtent() const;
155  double GetRegRMinExtent() const;
156  virtual std::string GetRegionShape() const;
158  void SetRMaxExtent(EqAstCoord rmaxextent);
159  void SetRMaxExtent(double RMinExtent);
161  virtual std::vector<AstroObject> GetInObjects(AstroObject const &filter) const;
162  virtual bool ExecuteEvent(AstroObject &ConditionObject) const;
164  virtual void PopulateRegion() ;
165  virtual void Clear() ;
167 };
168 
169 //------------------------------------------------------------------------------------------
170 
171 class Circle : public Region
172 {
173 protected:
174  double RegR;
175  std::string RegionShape;
177 public:
178  std::vector<AstroObject> CircleContainer;
180  Circle(double R);
182  virtual ~Circle() ;
184  virtual void WriteRegion(std::string const &file) const;
186  double GetRegR() const;
187  virtual std::string GetRegionShape() const;
188  void SetRegR(double R);
190  virtual std::vector<AstroObject> GetInObjects(AstroObject const &filter) const;
191  virtual bool ExecuteEvent(AstroObject const &ConditionObject) const;
192  virtual void PopulateRegion() ;
193  virtual void Clear() ;
195 };
196 
197 //------------------------------------------------------------------------------------------
198 
199 
200 class Box : public Region
201 {
202 protected:
203  EqAstCoord RegVertex;
204  double RegHeight;
205  double RegWidth;
206  std::string RegionShape;
207 public:
208  std::vector<AstroObject> BoxContainer;
210  Box(EqAstCoord regvertex, double regheight,double regwidth);
212  virtual ~Box() ;
214  virtual void WriteRegion(std::string const &file) const;
216  EqAstCoord GetVertex() const;
217  double GetRegHeight() const;
218  double GetRegWidth() const;
219  virtual std::string GetRegionShape() const;
221  void SetRegVertex(EqAstCoord regvertex);
222  void SetRegHeight(double regheight);
223  void SetRegWidth(double regwidth);
225  virtual std::vector<AstroObject> GetInObjects(AstroObject const &filter) const;
226  virtual bool ExecuteEvent(AstroObject const &ConditionObject) const;
227  virtual void PopulateRegion() ;
228  virtual void Clear() ;
229  };
230 
231 //------------------------------------------------------------------------------------------
232 
233 
234 class Line : public Region
235 {
236 protected:
237  EqAstCoord RegSecondPoint;
238  std::string RegionShape;
240 public:
241  std::vector<AstroObject> LineContainer;
243  Line(EqAstCoord RegSecondPoint);
245  virtual ~Line() ;
247  EqAstCoord GetRegSecondPoint() const;
248  virtual std::string GetRegionShape() const;
250  virtual void WriteRegion(std::string const &file) const;
251  void SetRegSecondPoint(EqAstCoord regsecondpoint);
253  virtual std::vector<AstroObject> GetInObjects(AstroObject const &filter) const;
254  virtual bool ExecuteEvent(AstroObject const &ConditionObject) const;
255  virtual void PopulateRegion() ;
256  virtual void Clear() ;
257 };
258 
259 //------------------------------------------------------------------------------------------
260 
261 class Point : public Region
262 {
263 protected:
264  std::string PointName;
265  std::string RegionShape;
267 public:
269  Point();
271  virtual ~Point() ;
273  void WriteRegion(std::string const &file) const;
274  virtual std::string GetRegionShape() const;
276  virtual bool ExecuteEvent(AstroObject const &ConditionObject) const;
277  virtual void PopulateRegion() ;
278  virtual void Clear() ;
279 };
280 
281 //--------------------------Particles-generator------------------------------------
282 
283 
284 
286 {
287  unsigned long long PDGId;
288  double Energy;
290 };
291 
292 
294 {
295 protected:
296  unsigned long long RunNumber;
297  std::string SaveFileName;
298 public:
299 
300  CosmicParticleGenerator(std::string const &filename, unsigned long long rn);
301  virtual ~CosmicParticleGenerator();
303  virtual std::string GetSaveFileName() const = 0;
304  virtual void SetSaveFileName(std::string const &file) = 0;
306  virtual TTree *Run(unsigned long long run, unsigned long long particles) = 0;
308  virtual TTree *FromFile(std::string cont &file) = 0;
309 };
310 
311 
313 {
314 
315 
316 protected:
317 
318 public:
321 virtual ~NeutralParticleGenerator();
323 };
324 
325 
326 
328 {
329 
330 
331 protected:
332 
333 public:
336 virtual ~ChargedParticleGenerator();
338 };
339 
340 
342 {
343 
344 protected:
345 
346 public:
347 PhotonGenerator();
349 virtual ~PhotonGenerator();
351 };
352 
353 
355 
356 {
357 
358 protected:
359 
360 public:
363 virtual ~ChargedBarionGenerator();
365 };
366 
367 
369 {
370 
371 protected:
372 
373 public:
374  NeutronGenerator();
376 virtual ~NeutronGenerator();
378 };
379 
381 {
382 
383 protected:
384 
385 public:
388 virtual ~ElectronGenerator();
390 };
391 
392 
394 {
395 protected:
396 std::string DetectorFileName;
397 public:
398 
399  NeutrinoGenerator(std::string const &filename);
401  virtual ~NeutrinoGenerator();
403 };
404 
405 };
406 
virtual void WriteRegion(std::string &file) const
Definition: roast.h:71
virtual std::vector< AstroObject > GetInObjects(AstroObject const &filter) const
EqAstCoord GetRegRMaxExtent() const
double Energy
Definition: roast.h:288
virtual ~Point()
std::string RegionShape
Definition: roast.h:265
std::string RegionShape
Definition: roast.h:142
virtual ~Box()
ObjectType
Definition: roast.h:78
Definition: roast.h:84
virtual ~Catalogue()
virtual ~Circle()
virtual TTree * Run(unsigned long long run, unsigned long long particles)=0
virtual void PopulateRegion()
void SetRegR(double R)
Definition: roast.h:64
virtual void WriteRegion(std::string const &file)=0
double MaxRedShift
Definition: roast.h:79
void WriteRegion(std::string const &file) const
double GetRegHeight() const
double RMinExtent
Definition: roast.h:141
std::vector< AstroObject > BoxContainer
Definition: roast.h:208
double MinRedShift
Definition: roast.h:80
Definition: roast.h:327
std::string RegionShape
Definition: roast.h:175
double Magnitude
Definition: roast.h:67
double GetRegR() const
GeoCoord From
Definition: roast.h:289
virtual std::string GetRegionShape() const
double RegWidth
Definition: roast.h:205
double GetRegWidth() const
Definition: roast.h:200
Definition: roast.h:171
virtual void PopulateRegion()
virtual std::string GetRegionShape() const =0
std::string SaveFileName
Definition: roast.h:297
double AstLong
Definition: roast.h:30
Definition: roast.h:368
virtual bool ExecuteEvent(AstroObject const &ConditionObject) const =0
Definition: roast.h:354
double MinColor
Definition: roast.h:77
Definition: roast.h:234
Ellipse(EqAstCoord rmaxextent, double rminextent)
virtual bool ExecuteEvent(AstroObject const &ConditionObject) const
void SetRegSecondPoint(EqAstCoord regsecondpoint)
GalactiCoord EqAstToGalaticCoord(EqAstCoord c)
void SetRegHeight(double regheight)
Definition: roast.h:27
double GetRegRMinExtent() const
GeoCoord GalacticToGeoCoord(GalactiCoord c)
virtual ~Region()
void SetRegVertex(EqAstCoord regvertex)
virtual void PopulateRegion()=0
Definition: roast.h:20
virtual void Clear()=0
Definition: roast.h:341
Definition: roast.h:40
Region(EqAstCoord centre)
virtual void SetSaveFileName(std::string const &file)=0
CosmicParticleGenerator(std::string const &filename, unsigned long long rn)
double MaxColor
Definition: roast.h:76
Definition: roast.h:285
Definition: roast.h:393
std::vector< AstroObject > LineContainer
Definition: roast.h:241
EqAstCoord GetRegSecondPoint() const
virtual void Clear()
virtual std::string GetSaveFileName() const =0
virtual void PopulateRegion()
EqAstCoord GeoToEqAstCoord(GeoCoord c)
Definition: roast.h:110
virtual void PopulateRegion()
virtual ~Ellipse()
void SetRegWidth(double regwidth)
void SetRMaxExtent(EqAstCoord rmaxextent)
Definition: roast.h:33
GalactiCoord GeoToGalaticCoord(GeoCoord c)
virtual std::string GetRegionShape() const
virtual void Clear()
virtual std::vector< AstroObject > GetInObjects(AstroObject const &filter) const
Definition: roast.h:293
virtual void Clear()
virtual void WriteRegion(std::string const &file) const
double GeoLong
Definition: roast.h:36
std::vector< AstroObject > Container
Definition: roast.h:93
Circle(double R)
std::string RegionShape
Definition: roast.h:206
virtual void WriteRegion(std::string const &file) const
virtual void Clear()
Definition: roast.h:137
virtual bool ExecuteEvent(AstroObject const &ConditionObject) const
std::vector< AstroObject > EllipseContainer
Definition: roast.h:145
EqAstCoord GetRegCentre() const
virtual TTree * FromFile(std::string cont &file)=0
Definition: roast.h:380
std::string RegionShape
Definition: roast.h:238
Line(EqAstCoord RegSecondPoint)
virtual bool ExecuteEvent(AstroObject &ConditionObject) const
virtual bool ExecuteEvent(AstroObject const &ConditionObject) const
fitsfile FitsImg
Definition: roast.h:89
std::vector< AstroObject > CircleContainer
Definition: roast.h:178
void SetRegCentre(EqAstCoord centre)
std::vector< SpectralMagnitude > MaxMagnitudes
Definition: roast.h:74
virtual ~Line()
Definition: roast.h:261
EqAstCoord GetVertex() const
virtual std::vector< AstroObject > GetInObjects(AstroObject const &filter) const =0
NeutrinoGenerator(std::string const &filename)
virtual bool ExecuteEvent(AstroObject const &ConditionObject) const
tm GeoTime
Definition: roast.h:37
EqAstCoord GalaticToEqAstCoord(GalactiCoord c)
std::vector< SpectralMagnitude > MinMagnitudes
Definition: roast.h:75
GeoCoord EqAstToGeoCoord(EqAstCoord c)
Definition: roast.h:312
double Decl
Definition: roast.h:23
virtual std::string GetRegionShape() const
virtual void PopulateRegion()
Box(EqAstCoord regvertex, double regheight, double regwidth)
virtual std::vector< AstroObject > GetInObjects(AstroObject const &filter) const
virtual std::string GetRegionShape() const
double RegHeight
Definition: roast.h:204
virtual std::string GetRegionShape() const
virtual void WriteRegion(std::string const &file) const
AstroObject PointContainer
Definition: roast.h:268
virtual void Clear()
Definition: roast.h:51
virtual std::vector< AstroObject > GetInObjects(AstroObject const &filter) const