00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef Tof_ROOT_GEO_H
00012 #define Tof_ROOT_GEO_H
00013
00014 #include <TGeoVolume.h>
00015 #include <TGeoNode.h>
00016 #include <TGeoPhysicalNode.h>
00017
00018 #include "SubDetectorROOTGeo.h"
00019 #include "Tof2DScin.h"
00020
00029 class TofROOTGeo : public SubDetectorROOTGeo
00030 {
00031 public:
00032
00034 TofROOTGeo();
00035
00037 ~TofROOTGeo();
00038
00040 void InitFromGDML( const char *gdmlFile, const char *setupName );
00041
00043 void InitFromROOT( TGeoVolume *vol );
00044
00046 void Init2DGeometry();
00047
00049 void SetNode();
00050
00052 void SetVolumeDefaultVis();
00053
00055 void SetAllVisible();
00056 void SetTMatch(Bool_t input);
00057 void SetQMatch(Bool_t input);
00058
00060 void SetQuarterVisible();
00061
00063 void SetHalfVisible();
00064
00066 void SetNoEndVisible();
00067
00069 void SetPhysicalNode();
00070
00072 void SetDetector();
00073
00075 void SetHits();
00076
00078 void SetVisTofDetector();
00079
00081 void SetVisTofHits();
00082
00084 int GetPartNb();
00085
00087 int GetScinNb(int part);
00088
00089
00090 int GetLayerNb(int part);
00091
00093 void SetVolumeTof(TGeoVolume *vol) { m_Tof = vol; }
00094
00096 TGeoVolume *GetVolumeTof() { return m_Tof; }
00097
00099
00100
00102 TGeoVolume *GetVolumePart( int part);
00103
00105 TGeoVolume *GetVolumePVF( int part, int layer );
00106
00108 TGeoVolume *GetVolumeAl( int part, int layer );
00109
00111 TGeoVolume *GetVolumeScin( int part, int layer );
00112
00114 TGeoVolume *GetVolumeBucket( int part, int layer );
00115
00117 TGeoNode *GetPVF( int part, int layer, int scin );
00118
00120 TGeoNode *GetAl( int part, int layer );
00121
00123 TGeoNode *GetScin( int part, int layer );
00124
00126
00127
00129 TGeoPhysicalNode *GetPhysicalScin( int part, int layer, int scin );
00130
00132 Tof2DScin *Get2DScin( Int_t part, Int_t layer, Int_t scin );
00133
00135 Int_t GetPart(TGeoPhysicalNode* phyNode);
00136
00138 void Draw(Option_t *option);
00139
00141 void DrawHits(Option_t *option);
00142
00143 private:
00144 static const int m_kPart = 3;
00145 static const int m_kLayerBr = 2;
00146 static const int m_kLayerEc = 1;
00147 static const int m_kScinBr = 88;
00148 static const int m_kScinEc = 48;
00149 static const int m_kBucketEc = 1;
00150 static const int m_kBucketBr = 2;
00151
00152 static const int TOF_TIME_FACTOR = 1000000;
00153 static const int TOF_CHARGE_FACTOR = 1000000;
00154
00155 Bool_t k_TMatch;
00156 Bool_t k_QMatch;
00157
00158 int m_TofColor;
00159 int m_BucketColor;
00160 int m_ScinColor;
00161
00162 TGeoVolume *m_Tof;
00163 TGeoNode *m_NodePVF[m_kPart][m_kLayerBr][m_kScinBr];
00164 TGeoNode *m_NodeAl[m_kPart][m_kLayerBr];
00165 TGeoNode *m_NodeScin[m_kPart][m_kLayerBr];
00166 TGeoPhysicalNode *m_PhysicalScin[m_kPart][m_kLayerBr][m_kScinBr];
00167
00168 const TObjArray *m_TofDigiCol;
00169
00170
00171 Tof2DScin *m_Tof2DScin[m_kPart][m_kLayerBr][m_kScinBr];
00172
00173 };
00174
00175 #endif