source: trunk/examples/novice/gemc/src/detector.h @ 893

Last change on this file since 893 was 807, checked in by garnier, 16 years ago

update

File size: 3.0 KB
Line 
1
2
3
4
5
6#ifndef detector_H
7#define detector_H 1
8
9// %%%%%%%%%%
10// G4 headers
11// %%%%%%%%%%
12#include "G4Colour.hh"
13#include "G4FieldManager.hh"
14#include "G4LogicalVolume.hh"
15#include "G4Material.hh"
16#include "G4PVPlacement.hh"
17#include "G4ThreeVector.hh"
18#include "G4VisAttributes.hh"
19#include "G4VSensitiveDetector.hh"
20#include "G4VSolid.hh"
21
22// %%%%%%%%%%%%%
23// gemc headers
24// %%%%%%%%%%%%%
25#include "usage.h"
26#include "identifier.h"
27#include "run_conditions.h"
28
29
30class detector
31{
32
33 public:
34   detector();
35  ~detector(){};
36
37   string                 name;   
38   string               mother;   
39   string          description;   
40
41   G4ThreeVector           pos;   
42   G4RotationMatrix        rot;   
43
44   G4VisAttributes       VAtts;   
45
46   string                 type;   
47   vector<double>   dimensions;   
48
49   string             material;   
50   string             magfield;   
51
52   int                   ncopy;   
53   bool                  pMany;   
54
55   int                   exist;   
56   int                 visible;   
57   int                   style;   
58
59   string          sensitivity;   
60   string              hitType;   
61   vector<identifier> identity;   
62
63   int                 scanned;   
64
65 private:
66   G4VSolid*                     SolidV;   
67   G4LogicalVolume*              LogicV;   
68   G4VPhysicalVolume*         PhysicalV;   
69
70 public:
71   int create_solid(gemc_opts, map<string, detector>*);                             
72   int create_logical_volume(map<string, G4Material*>*, gemc_opts);                 
73   int create_physical_volumes(gemc_opts, G4LogicalVolume*);                       
74   void setSensitivity(G4VSensitiveDetector *SD){LogicV->SetSensitiveDetector(SD);} 
75
76   G4VSolid          *GetSolid()   { return SolidV;}                               
77   G4LogicalVolume   *GetLogical() { return LogicV;}                               
78   G4VPhysicalVolume *GetPhysical(){ return PhysicalV;}                             
79   void SetLogical(G4LogicalVolume *LV){LogicV = LV;}                               
80   void SetTranslation(G4ThreeVector TR){PhysicalV->SetTranslation(TR);}           
81   void RemoveDaughter(G4VPhysicalVolume* PV){LogicV->RemoveDaughter(PV);}         
82   void AssignMFM(G4FieldManager* MFM){LogicV->SetFieldManager(MFM, true);}         
83
84   void SetUserLimits(G4UserLimits* L) { LogicV->SetUserLimits(L);}
85
86   friend ostream &operator<<(ostream &stream, detector);                           
87   bool operator== (const detector& D) const;                                       
88};
89
90
91// All these functions defined here but maybe should be moved somewhere else for consistency.
92vector< vector<string> > dimensionstype(string);                 
93double get_number(string);                                       
94string TrimSpaces(string in);                                     
95map<string, detector> read_detector(gemc_opts, run_conditions);   
96map<string, G4Material*> DefineMaterials();                       
97vector<int> set_IDshifts(vector<int>);                           
98
99
100#endif
101
Note: See TracBrowser for help on using the repository browser.