/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkExtAlg/TrkExtAlg-00-00-64/TrkExtAlg/ExtBesEmcConstruction.h

Go to the documentation of this file.
00001 #ifndef ExtBesEmcConstruction_h
00002 #define ExtBesEmcConstruction_h 1
00003 
00004 #include "globals.hh"
00005 #include "TrkExtAlg/ExtBesSubdetector.h"
00006 
00007 //For Code construction------------
00008 #include "ExtBesEmcGeometry.h"
00009 #include "ExtBesEmcEndGeometry.h"
00010 #include "G4VPVParameterisation.hh"
00011 
00012 class G4Box;
00013 class G4Tubs;
00014 class G4Cons;
00015 class G4Polyhedra;
00016 class G4Trap;
00017 class G4UnionSolid;
00018 class G4LogicalVolume;
00019 class G4VPhysicalVolume;
00020 class G4Material;
00021 class G4UniformMagField;
00022 class BesEmcDetectorMessenger;
00023 class BesEmcSD;
00024 class G4IrregBox;
00025 class G4SubtractionSolid;
00026 //--------------------------------
00027 
00028 class ExtBesEmcConstruction : public ExtBesSubdetector
00029 {
00030         public:
00031                 ExtBesEmcConstruction();
00032                 ~ExtBesEmcConstruction();
00033 
00034                 static ExtBesEmcConstruction* GetBesEmcConstruction() {return fBesEmcConstruction;};
00035 
00036                 void Construct(G4LogicalVolume*);
00037                 
00038                 void ConstructSPFrame(G4LogicalVolume*, ExtBesEmcGeometry*);
00039                 void ConstructEndGeometry(G4LogicalVolume*);
00040                 G4int ComputeEndCopyNb(G4int);
00041 
00042 
00043                 inline void SetVerboseLevel(G4int val){ verboseLevel=val;}
00044 
00045                 void SetCrystalMaterial (G4String);
00046 
00047                 void SetCasingMaterial (G4String);
00048                 void SetCasingThickness(G4ThreeVector);
00049 
00050                 void SetBSCRmin(G4double);
00051                 void SetBSCNbPhi(G4int);
00052                 void SetBSCNbTheta(G4int);
00053                 void SetStartIDTheta(G4int);
00054                 void SetBSCCrystalLength(G4double);
00055                 void SetBSCYFront0(G4double);
00056                 void SetBSCYFront(G4double);
00057                 void SetBSCPosition0(G4double);
00058                 void SetBSCPosition1(G4double);
00059 
00060                 void SetMagField(G4double);
00061 
00062                 void UpdateGeometry();
00063 
00064                 void PrintEMCParameters();
00065 
00066                 G4int GetVerboseLevel() {return verboseLevel;};
00067                 G4double GetMagField()  {return fmagField;};
00068 
00069                 G4int GetStartIDTheta()          {return startID;};
00070 
00071                 G4Material* GetCrystalMaterial()  {return fCrystalMaterial;};
00072                 G4Material* GetCasingMaterial()       {return fCasingMaterial;};
00073   //G4ThreeVector GetCasingThickness()   {return G4ThreeVector(fTyvekThickness,fAlThickness,fMylarThickness);};
00074 
00075                 const G4VPhysicalVolume* GetEMC() {return physiEMC; }
00076                 const G4VPhysicalVolume* GetBSCPhi() {return physiBSCPhi;};
00077                 const G4VPhysicalVolume* GetBSCTheta() {return physiBSCTheta;};
00078                 const G4VPhysicalVolume* GetBSCCrystal(){return physiBSCCrystal;};
00079                 const G4VPVParameterisation* GetCrystalParam(){return crystalParam;};
00080         
00081         private:
00082                 static ExtBesEmcConstruction* fBesEmcConstruction;
00083 
00084         private:
00085                 void DefineMaterials();
00086                 //              G4LogicalVolume* logicalEmc;
00087                 //              G4VPhysicalVolume* physicalEmc;
00088                 
00089 //For code construction-----------------------
00090   G4int              verboseLevel;
00091   G4double           fmagField;
00092      
00093   G4Material*        fCrystalMaterial;
00094 
00095   G4int              phiNbCrystals;
00096   G4int              thetaNbCrystals;
00097   G4int              startID;
00098 
00099   G4Material*        fCasingMaterial;
00100   
00101   G4Material*        defaultMaterial;
00102 
00103   G4Tubs*             solidBSC;     //Barrel
00104   G4Tubs*             solidESC;     //Endcap
00105   G4UnionSolid*       solidEMC;
00106   G4LogicalVolume*    logicEMC;
00107   G4VPhysicalVolume*  physiEMC;
00108   
00109   G4Tubs*            solidBSCPhiTub;
00110   G4Cons*            solidConsPhi;
00111   G4SubtractionSolid* solidBSCPhi1;
00112   G4SubtractionSolid* solidBSCPhi;   //pointer to the solid Layer 
00113   G4LogicalVolume*   logicBSCPhi;    //pointer to the logical Layer
00114   G4VPhysicalVolume* physiBSCPhi;    //pointer to the physical Layer
00115 
00116   G4Trap*            solidBSCTheta; //pointer to the solid Absorber
00117   G4LogicalVolume*   logicBSCTheta; //pointer to the logical Absorber
00118   G4VPhysicalVolume* physiBSCTheta; //pointer to the physical Absorber
00119   
00120   G4Trap*            solidBSCCrystal; //pointer to the solid Absorber
00121   G4LogicalVolume*   logicBSCCrystal; //pointer to the logical Absorber
00122   G4VPhysicalVolume* physiBSCCrystal; //pointer to the physical Absorber
00123 
00124   G4UniformMagField* magField;      //pointer to the magnetic field
00125   
00126   BesEmcDetectorMessenger* detectorMessenger;  //pointer to the Messenger
00127   BesEmcSD*          besEMCSD;  //pointer to the sensitive detector
00128   ExtBesEmcGeometry     *besEMCGeometry;
00129   ExtBesEmcEndGeometry  *emcEnd;
00130   G4VPVParameterisation*  crystalParam;
00131 
00132 
00133 //Endcap geometry
00134   G4Cons*            solidEnd;      //pointer to the endcap
00135   G4LogicalVolume*   logicEnd;
00136   G4VPhysicalVolume* physiEnd;
00137 
00138   G4Cons*            solidEndPhi;
00139   G4LogicalVolume*   logicEndPhi;
00140   G4VPhysicalVolume* physiEndPhi;
00141 
00142   G4IrregBox*        solidEndCasing;
00143   G4LogicalVolume*   logicEndCasing;
00144   G4VPhysicalVolume* physiEndCasing;
00145 
00146   G4IrregBox*        solidEndCrystal;
00147   G4LogicalVolume*   logicEndCrystal;
00148   G4VPhysicalVolume* physiEndCrystal;
00149 
00150 //other substance on the rear face of crystal
00151 private:
00152 
00153   G4Box*              solidRear;          //virtual volume
00154   G4LogicalVolume*    logicRear;
00155   G4VPhysicalVolume*  physiRear;
00156 
00157   G4Box*              solidCasingBox;     //casing
00158   G4Box*              solidAirHole;
00159   G4SubtractionSolid* solidRearCasing;
00160   G4LogicalVolume*    logicRearCasing;
00161   G4VPhysicalVolume*  physiRearCasing;
00162 
00163   G4Box*              solidOrgGlass;      //organic glass
00164   G4LogicalVolume*    logicOrgGlass;
00165   G4VPhysicalVolume*  physiOrgGlass;
00166 
00167   G4Box*              solidPD;            //photodiode
00168   G4LogicalVolume*    logicPD;
00169   G4VPhysicalVolume*  physiPD;
00170 
00171   G4Box*              solidAlBox;         //Al plate
00172   G4SubtractionSolid* solidAlPlate;
00173   G4LogicalVolume*    logicAlPlate;
00174   G4VPhysicalVolume*  physiAlPlate;
00175 
00176   G4Box*              solidPreAmpBox;     //preamplifier box
00177   G4LogicalVolume*    logicPreAmpBox;
00178   G4VPhysicalVolume*  physiPreAmpBox;
00179 
00180   G4Box*              solidAirInPABox;    //air in preamplifier box
00181   G4LogicalVolume*    logicAirInPABox;
00182   G4VPhysicalVolume*  physiAirInPABox;
00183 
00184   G4Box*              solidHangingPlate;  //stainless steel for hanging the crysta
00185   G4LogicalVolume*    logicHangingPlate;
00186   G4VPhysicalVolume*  physiHangingPlate;
00187 
00188   G4Cons*             solidOCGirder;      //opening-cut girder
00189   G4LogicalVolume*    logicOCGirder;
00190   G4VPhysicalVolume*  physiOCGirder;
00191 
00192   G4Tubs*             solidCable;         //cable
00193   G4LogicalVolume*    logicCable;
00194   G4VPhysicalVolume*  physiCable;
00195 
00196   G4Tubs*             solidWaterPipe;     //water pipe
00197   G4LogicalVolume*    logicWaterPipe;
00198   G4VPhysicalVolume*  physiWaterPipe;
00199 
00200 //barrel support frame
00201 private:
00202   G4Tubs*             solidSupportBar;      //support bar
00203   G4LogicalVolume*    logicSupportBar;
00204   G4VPhysicalVolume*  physiSupportBar;
00205   
00206   G4Tubs*             solidSupportBar1;
00207   G4LogicalVolume*    logicSupportBar1;
00208   G4VPhysicalVolume*  physiSupportBar1;
00209   
00210   G4Tubs*             solidEndRing;       //end ring
00211   G4LogicalVolume*    logicEndRing;
00212   G4VPhysicalVolume*  physiEndRing;
00213 
00214   G4Tubs*             solidGear;
00215   G4LogicalVolume*    logicGear;
00216   G4VPhysicalVolume*  physiGear;
00217 
00218   G4Tubs*             solidTaperRing1;     //taper ring
00219   G4LogicalVolume*    logicTaperRing1;
00220   G4VPhysicalVolume*  physiTaperRing1;
00221 
00222   G4Cons*             solidTaperRing2;
00223   G4LogicalVolume*    logicTaperRing2;
00224   G4VPhysicalVolume*  physiTaperRing2;
00225 
00226   G4Cons*             solidTaperRing3;
00227   G4LogicalVolume*    logicTaperRing3;
00228   G4VPhysicalVolume*  physiTaperRing3;
00229 
00230 private:
00231   G4Material*         rearCasingMaterial;
00232   G4Material*         organicGlass;
00233   G4Material*         stainlessSteel;
00234   G4Material*         cable;
00235   G4Material*         waterPipe;
00236 
00237 //----------------------------------------------------------------
00238 
00239 
00240 };
00241 
00242 #endif

Generated on Tue Nov 29 23:14:12 2016 for BOSS_7.0.2 by  doxygen 1.4.7