Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ExtBesEmcConstruction Class Reference

#include <ExtBesEmcConstruction.h>

Inheritance diagram for ExtBesEmcConstruction:

ExtBesSubdetector ExtBesSubdetector List of all members.

Public Member Functions

G4int ComputeEndCopyNb (G4int)
G4int ComputeEndCopyNb (G4int)
void Construct (G4LogicalVolume *)
void Construct (G4LogicalVolume *)
void ConstructEndGeometry (G4LogicalVolume *)
void ConstructEndGeometry (G4LogicalVolume *)
void ConstructSPFrame (G4LogicalVolume *, ExtBesEmcGeometry *)
void ConstructSPFrame (G4LogicalVolume *, ExtBesEmcGeometry *)
 ExtBesEmcConstruction ()
 ExtBesEmcConstruction ()
G4LogicalVolume * FindLogicalVolume (const G4String &vn)
G4LogicalVolume * FindLogicalVolume (const G4String &vn)
const G4VPhysicalVolume * GetBSCCrystal ()
const G4VPhysicalVolume * GetBSCCrystal ()
const G4VPhysicalVolume * GetBSCPhi ()
const G4VPhysicalVolume * GetBSCPhi ()
const G4VPhysicalVolume * GetBSCTheta ()
const G4VPhysicalVolume * GetBSCTheta ()
G4Material * GetCasingMaterial ()
G4Material * GetCasingMaterial ()
G4Material * GetCrystalMaterial ()
G4Material * GetCrystalMaterial ()
const G4VPVParameterisation * GetCrystalParam ()
const G4VPVParameterisation * GetCrystalParam ()
const G4VPhysicalVolume * GetEMC ()
const G4VPhysicalVolume * GetEMC ()
G4double GetMagField ()
G4double GetMagField ()
G4int GetStartIDTheta ()
G4int GetStartIDTheta ()
G4int GetVerboseLevel ()
G4int GetVerboseLevel ()
void PrintEMCParameters ()
void PrintEMCParameters ()
void SetBSCCrystalLength (G4double)
void SetBSCCrystalLength (G4double)
void SetBSCNbPhi (G4int)
void SetBSCNbPhi (G4int)
void SetBSCNbTheta (G4int)
void SetBSCNbTheta (G4int)
void SetBSCPosition0 (G4double)
void SetBSCPosition0 (G4double)
void SetBSCPosition1 (G4double)
void SetBSCPosition1 (G4double)
void SetBSCRmin (G4double)
void SetBSCRmin (G4double)
void SetBSCYFront (G4double)
void SetBSCYFront (G4double)
void SetBSCYFront0 (G4double)
void SetBSCYFront0 (G4double)
void SetCasingMaterial (G4String)
void SetCasingMaterial (G4String)
void SetCasingThickness (G4ThreeVector)
void SetCasingThickness (G4ThreeVector)
void SetCrystalMaterial (G4String)
void SetCrystalMaterial (G4String)
void SetMagField (G4double)
void SetMagField (G4double)
void SetStartIDTheta (G4int)
void SetStartIDTheta (G4int)
void SetVerboseLevel (G4int val)
void SetVerboseLevel (G4int val)
void UpdateGeometry ()
void UpdateGeometry ()
 ~ExtBesEmcConstruction ()
 ~ExtBesEmcConstruction ()

Static Public Member Functions

ExtBesEmcConstructionGetBesEmcConstruction ()
ExtBesEmcConstructionGetBesEmcConstruction ()

Private Member Functions

void DefineMaterials ()
void DefineMaterials ()

Private Attributes

ExtBesEmcGeometrybesEMCGeometry
ExtBesEmcGeometrybesEMCGeometry
BesEmcSDbesEMCSD
BesEmcSDbesEMCSD
G4Material * cable
G4Material * cable
G4VPVParameterisation * crystalParam
G4VPVParameterisation * crystalParam
G4Material * defaultMaterial
G4Material * defaultMaterial
BesEmcDetectorMessengerdetectorMessenger
BesEmcDetectorMessengerdetectorMessenger
ExtBesEmcEndGeometryemcEnd
ExtBesEmcEndGeometryemcEnd
G4Material * fCasingMaterial
G4Material * fCasingMaterial
G4Material * fCrystalMaterial
G4Material * fCrystalMaterial
G4double fmagField
G4LogicalVolume * logicAirInPABox
G4LogicalVolume * logicAirInPABox
G4LogicalVolume * logicAlPlate
G4LogicalVolume * logicAlPlate
G4LogicalVolume * logicBSCCrystal
G4LogicalVolume * logicBSCCrystal
G4LogicalVolume * logicBSCPhi
G4LogicalVolume * logicBSCPhi
G4LogicalVolume * logicBSCTheta
G4LogicalVolume * logicBSCTheta
G4LogicalVolume * logicCable
G4LogicalVolume * logicCable
G4LogicalVolume * logicEMC
G4LogicalVolume * logicEMC
G4LogicalVolume * logicEnd
G4LogicalVolume * logicEnd
G4LogicalVolume * logicEndCasing
G4LogicalVolume * logicEndCasing
G4LogicalVolume * logicEndCrystal
G4LogicalVolume * logicEndCrystal
G4LogicalVolume * logicEndPhi
G4LogicalVolume * logicEndPhi
G4LogicalVolume * logicEndRing
G4LogicalVolume * logicEndRing
G4LogicalVolume * logicGear
G4LogicalVolume * logicGear
G4LogicalVolume * logicHangingPlate
G4LogicalVolume * logicHangingPlate
G4LogicalVolume * logicOCGirder
G4LogicalVolume * logicOCGirder
G4LogicalVolume * logicOrgGlass
G4LogicalVolume * logicOrgGlass
G4LogicalVolume * logicPD
G4LogicalVolume * logicPD
G4LogicalVolume * logicPreAmpBox
G4LogicalVolume * logicPreAmpBox
G4LogicalVolume * logicRear
G4LogicalVolume * logicRear
G4LogicalVolume * logicRearCasing
G4LogicalVolume * logicRearCasing
G4LogicalVolume * logicSupportBar
G4LogicalVolume * logicSupportBar
G4LogicalVolume * logicSupportBar1
G4LogicalVolume * logicSupportBar1
G4LogicalVolume * logicTaperRing1
G4LogicalVolume * logicTaperRing1
G4LogicalVolume * logicTaperRing2
G4LogicalVolume * logicTaperRing2
G4LogicalVolume * logicTaperRing3
G4LogicalVolume * logicTaperRing3
G4LogicalVolume * logicWaterPipe
G4LogicalVolume * logicWaterPipe
G4UniformMagField * magField
G4UniformMagField * magField
G4Material * organicGlass
G4Material * organicGlass
G4int phiNbCrystals
G4VPhysicalVolume * physiAirInPABox
G4VPhysicalVolume * physiAirInPABox
G4VPhysicalVolume * physiAlPlate
G4VPhysicalVolume * physiAlPlate
G4VPhysicalVolume * physiBSCCrystal
G4VPhysicalVolume * physiBSCCrystal
G4VPhysicalVolume * physiBSCPhi
G4VPhysicalVolume * physiBSCPhi
G4VPhysicalVolume * physiBSCTheta
G4VPhysicalVolume * physiBSCTheta
G4VPhysicalVolume * physiCable
G4VPhysicalVolume * physiCable
G4VPhysicalVolume * physiEMC
G4VPhysicalVolume * physiEMC
G4VPhysicalVolume * physiEnd
G4VPhysicalVolume * physiEnd
G4VPhysicalVolume * physiEndCasing
G4VPhysicalVolume * physiEndCasing
G4VPhysicalVolume * physiEndCrystal
G4VPhysicalVolume * physiEndCrystal
G4VPhysicalVolume * physiEndPhi
G4VPhysicalVolume * physiEndPhi
G4VPhysicalVolume * physiEndRing
G4VPhysicalVolume * physiEndRing
G4VPhysicalVolume * physiGear
G4VPhysicalVolume * physiGear
G4VPhysicalVolume * physiHangingPlate
G4VPhysicalVolume * physiHangingPlate
G4VPhysicalVolume * physiOCGirder
G4VPhysicalVolume * physiOCGirder
G4VPhysicalVolume * physiOrgGlass
G4VPhysicalVolume * physiOrgGlass
G4VPhysicalVolume * physiPD
G4VPhysicalVolume * physiPD
G4VPhysicalVolume * physiPreAmpBox
G4VPhysicalVolume * physiPreAmpBox
G4VPhysicalVolume * physiRear
G4VPhysicalVolume * physiRear
G4VPhysicalVolume * physiRearCasing
G4VPhysicalVolume * physiRearCasing
G4VPhysicalVolume * physiSupportBar
G4VPhysicalVolume * physiSupportBar
G4VPhysicalVolume * physiSupportBar1
G4VPhysicalVolume * physiSupportBar1
G4VPhysicalVolume * physiTaperRing1
G4VPhysicalVolume * physiTaperRing1
G4VPhysicalVolume * physiTaperRing2
G4VPhysicalVolume * physiTaperRing2
G4VPhysicalVolume * physiTaperRing3
G4VPhysicalVolume * physiTaperRing3
G4VPhysicalVolume * physiWaterPipe
G4VPhysicalVolume * physiWaterPipe
G4Material * rearCasingMaterial
G4Material * rearCasingMaterial
G4Box * solidAirHole
G4Box * solidAirHole
G4Box * solidAirInPABox
G4Box * solidAirInPABox
G4Box * solidAlBox
G4Box * solidAlBox
G4SubtractionSolid * solidAlPlate
G4SubtractionSolid * solidAlPlate
G4Tubs * solidBSC
G4Tubs * solidBSC
G4Trap * solidBSCCrystal
G4Trap * solidBSCCrystal
G4SubtractionSolid * solidBSCPhi
G4SubtractionSolid * solidBSCPhi
G4SubtractionSolid * solidBSCPhi1
G4SubtractionSolid * solidBSCPhi1
G4Tubs * solidBSCPhiTub
G4Tubs * solidBSCPhiTub
G4Trap * solidBSCTheta
G4Trap * solidBSCTheta
G4Tubs * solidCable
G4Tubs * solidCable
G4Box * solidCasingBox
G4Box * solidCasingBox
G4Cons * solidConsPhi
G4Cons * solidConsPhi
G4UnionSolid * solidEMC
G4UnionSolid * solidEMC
G4Cons * solidEnd
G4Cons * solidEnd
G4IrregBox * solidEndCasing
G4IrregBox * solidEndCasing
G4IrregBox * solidEndCrystal
G4IrregBox * solidEndCrystal
G4Cons * solidEndPhi
G4Cons * solidEndPhi
G4Tubs * solidEndRing
G4Tubs * solidEndRing
G4Tubs * solidESC
G4Tubs * solidESC
G4Tubs * solidGear
G4Tubs * solidGear
G4Box * solidHangingPlate
G4Box * solidHangingPlate
G4Cons * solidOCGirder
G4Cons * solidOCGirder
G4Box * solidOrgGlass
G4Box * solidOrgGlass
G4Box * solidPD
G4Box * solidPD
G4Box * solidPreAmpBox
G4Box * solidPreAmpBox
G4Box * solidRear
G4Box * solidRear
G4SubtractionSolid * solidRearCasing
G4SubtractionSolid * solidRearCasing
G4Tubs * solidSupportBar
G4Tubs * solidSupportBar
G4Tubs * solidSupportBar1
G4Tubs * solidSupportBar1
G4Tubs * solidTaperRing1
G4Tubs * solidTaperRing1
G4Cons * solidTaperRing2
G4Cons * solidTaperRing2
G4Cons * solidTaperRing3
G4Cons * solidTaperRing3
G4Tubs * solidWaterPipe
G4Tubs * solidWaterPipe
G4Material * stainlessSteel
G4Material * stainlessSteel
G4int startID
G4int thetaNbCrystals
G4int verboseLevel
G4Material * waterPipe
G4Material * waterPipe

Static Private Attributes

ExtBesEmcConstructionfBesEmcConstruction
ExtBesEmcConstructionfBesEmcConstruction = 0

Constructor & Destructor Documentation

ExtBesEmcConstruction::ExtBesEmcConstruction  ) 
 

00051    :verboseLevel(0),
00052    solidEMC(0),logicEMC(0),physiEMC(0),
00053    solidBSCPhi(0),logicBSCPhi(0),physiBSCPhi(0),
00054    solidBSCTheta(0),logicBSCTheta(0),physiBSCTheta(0),
00055    solidBSCCrystal(0),logicBSCCrystal(0),physiBSCCrystal(0),
00056    magField(0),detectorMessenger(0),
00057    besEMCSD(0),crystalParam(0) 
00058 {
00059         if(!fBesEmcConstruction) fBesEmcConstruction=this;
00060         
00061         startID           = 1;
00062         phiNbCrystals     = 0;
00063         thetaNbCrystals   = 0;
00064         besEMCGeometry = new ExtBesEmcGeometry();
00065         emcEnd = new ExtBesEmcEndGeometry();    
00066 }

ExtBesEmcConstruction::~ExtBesEmcConstruction  ) 
 

00069 {
00070   if(crystalParam) delete crystalParam;
00071   if(besEMCGeometry) delete besEMCGeometry;
00072   if(emcEnd) delete emcEnd;
00073 }

ExtBesEmcConstruction::ExtBesEmcConstruction  ) 
 

ExtBesEmcConstruction::~ExtBesEmcConstruction  ) 
 


Member Function Documentation

G4int ExtBesEmcConstruction::ComputeEndCopyNb G4int   ) 
 

G4int ExtBesEmcConstruction::ComputeEndCopyNb G4int   ) 
 

01276 {
01277   G4int copyNb;
01278   switch(num){
01279     case 30:
01280       copyNb = 5;
01281       break;
01282     case 31:
01283       copyNb = 6;
01284       break;
01285     case 32:
01286       copyNb = 14;
01287       break;
01288     case 33:
01289       copyNb = 15;
01290       break;
01291     case 34:
01292       copyNb = 16;
01293       break;
01294     default:
01295       copyNb = num;
01296       break;
01297   }
01298   return copyNb;
01299 }

void ExtBesEmcConstruction::Construct G4LogicalVolume *   )  [virtual]
 

Implements ExtBesSubdetector.

void ExtBesEmcConstruction::Construct G4LogicalVolume *   )  [virtual]
 

Implements ExtBesSubdetector.

00076 {
00077   /*
00078         G4String GeometryPath = getenv("SIMUTILROOT");
00079         GeometryPath+="/dat/Emc.gdml";
00080         
00081         m_config.SetURI(GeometryPath);
00082         m_config.SetSetupName( "Emc" );
00083         m_config.SetSetupVersion( "1.0" );
00084         m_config.SetType( "G4" );
00085         m_sxp.Configure(&m_config);
00086         m_sxp.Initialize();
00087 
00088         //construct Emc
00089         m_sxp.Run();
00090 
00091         logicalEmc = FindLogicalVolume("logicalEmc");
00092         physicalEmc = new G4PVPlacement(0,G4ThreeVector(0.0 ,0.0 ,0.0),logicalEmc, "BSC",logicBes, false, 0);
00093 
00094         m_sxp.Finalize();
00095   */
00096 
00097 //new version of geometry construction from gdml  
00098   logicEMC = EmcG4Geo::Instance()->GetTopVolume();
00099   if(logicEMC) physiEMC = new G4PVPlacement(0,G4ThreeVector(0.0 ,0.0 ,0.0),logicEMC, "physicalEMC",logicBes, false, 0);
00100 
00101   
00102 //geometry construction by code
00103 /*
00104   besEMCGeometry->ComputeEMCParameters();
00105   emcEnd->ComputeParameters();
00106   DefineMaterials();
00107   phiNbCrystals     = (*besEMCGeometry).BSCNbPhi;
00108     thetaNbCrystals   = (*besEMCGeometry).BSCNbTheta*2;
00109     //
00110     //BSC
00111     //
00112     //G4cout << "Acquired " << G4Material::GetMaterial("Air") << G4endl;
00113         
00114     solidBSC = new G4Tubs("BSC",
00115       (*besEMCGeometry).TaperRingRmin1,
00116       (*besEMCGeometry).BSCRmax+(*besEMCGeometry).SPBarThickness+(*besEMCGeometry).SPBarThickness1,
00117       (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3+(*besEMCGeometry).EndRingDz,
00118                         0.*deg,
00119                         360.*deg);
00120 
00121     solidESC = new G4Tubs("ESC",(*emcEnd).WorldRmin2,(*emcEnd).WorldRmax2,(*emcEnd).WorldDz/2,0.*deg,360.*deg);
00122 
00123     solidEMC = new G4UnionSolid("EMC",
00124         solidBSC,
00125         solidESC,
00126         0,
00127         G4ThreeVector(0,0,(*emcEnd).WorldZPosition));
00128 
00129     solidEMC = new G4UnionSolid("EMC",
00130         solidEMC,
00131         solidESC,
00132         0,
00133         G4ThreeVector(0,0,-(*emcEnd).WorldZPosition));
00134     
00135     logicEMC = new G4LogicalVolume(solidEMC,
00136                          G4Material::GetMaterial("Air"),
00137                          "EMC");
00138     
00139     physiEMC = new G4PVPlacement(0,
00140         0,
00141         logicEMC,
00142         "EMC",
00143         logicBes,
00144         false,
00145         0);
00146 
00147     //  G4RotationMatrix *rotateMatrixBSC;
00148     //  rotateMatrixBSC = new G4RotationMatrix();
00149     //  G4ThreeVector newAxisX=G4ThreeVector(1.,0,0);
00150     //  G4ThreeVector newAxisY=G4ThreeVector(0,-1.,0);
00151     //  G4ThreeVector newAxisZ=G4ThreeVector(0,0,-1.);
00152     //  rotateMatrixBSC->rotateAxes(newAxisX,newAxisY,newAxisZ);
00153     //  rotateMatrixBSC->rotateX(180.*deg);
00154     //  physiBSC = new G4PVPlacement(rotateMatrixBSC,
00155     //                 G4ThreeVector(0,0,-BSCDz/2.),
00156     //                 "BSC",
00157     //                 logicBSC,
00158     //                 logicEMC,
00159     //                 false,
00160     //                 1);
00161     //
00162     // Phi Cell
00163     solidBSCPhiTub = new G4Tubs(
00164                            "BSCPhiTub",
00165                            (*besEMCGeometry).BSCRmin,
00166                            (*besEMCGeometry).BSCPhiRmax,
00167                            (*besEMCGeometry).BSCDz,
00168                            360.*deg-(*besEMCGeometry).BSCPhiDphi,
00169                            (*besEMCGeometry).BSCPhiDphi);
00170     solidConsPhi = new G4Cons("consPhi",
00171          (*besEMCGeometry).BSCRmin1,
00172          (*besEMCGeometry).BSCRmax1,
00173          (*besEMCGeometry).BSCRmin2,
00174          (*besEMCGeometry).BSCRmax2,
00175          (*besEMCGeometry).BSCDz1/2,
00176          0.*deg,
00177          360.*deg);
00178     solidBSCPhi1 = new G4SubtractionSolid("BSCPhi1",
00179          solidBSCPhiTub,
00180          solidConsPhi,
00181          0,
00182          G4ThreeVector(0,0,(*besEMCGeometry).BSCDz-(*besEMCGeometry).BSCDz1/2));
00183     solidConsPhi = new G4Cons("consPhi",
00184          (*besEMCGeometry).BSCRmin2,
00185          (*besEMCGeometry).BSCRmax2,
00186          (*besEMCGeometry).BSCRmin1,
00187          (*besEMCGeometry).BSCRmax1,
00188          (*besEMCGeometry).BSCDz1/2,
00189          0.*deg,
00190          360.*deg);
00191     solidBSCPhi = new G4SubtractionSolid("BSCPhi",
00192          solidBSCPhi1,
00193          solidConsPhi,
00194          0,
00195          G4ThreeVector(0,0,(*besEMCGeometry).BSCDz1/2-(*besEMCGeometry).BSCDz));
00196   
00197     logicBSCPhi = new G4LogicalVolume(solidBSCPhi,
00198                                     G4Material::GetMaterial("Air"),
00199                                     "BSCPhi");
00200 
00201     //new geometry by Fu Chengdong
00202     G4RotationMatrix *rotateMatrix[200];
00203     G4double oOp,ox,oy,oz;  
00204     G4int i;
00205     G4double delta = 0*deg;
00206     G4ThreeVector axis = G4ThreeVector(0,0,0);
00207     oOp=(*besEMCGeometry).BSCRmin/sin(0.5*(*besEMCGeometry).BSCPhiDphi+90*deg)
00208       *sin((*besEMCGeometry).BSCAngleRotat);
00209     G4double ll=(*besEMCGeometry).BSCCryLength;
00210     G4double rr=(*besEMCGeometry).BSCRmin;
00211     G4double oj=sqrt(ll*ll+rr*rr-2*ll*rr*cos(180.*deg-(*besEMCGeometry).BSCAngleRotat));
00212     G4double oij=90.*deg-(*besEMCGeometry).BSCPhiDphi/2.-(*besEMCGeometry).BSCAngleRotat;
00213     G4double doj=asin(sin(180.*deg-(*besEMCGeometry).BSCAngleRotat)/oj*ll);
00214     G4double ioj=(*besEMCGeometry).BSCPhiDphi/2.+doj;
00215     G4double ij=oj/sin(oij)*sin(ioj);
00216     G4double dOp=rr/sin(90.*deg-(*besEMCGeometry).BSCPhiDphi/2.)
00217       *sin(90.*deg+(*besEMCGeometry).BSCPhiDphi/2.-(*besEMCGeometry).BSCAngleRotat);
00218     G4double cOp=rr/sin(90.*deg+(*besEMCGeometry).BSCPhiDphi/2.)
00219       *sin(90.*deg-(*besEMCGeometry).BSCPhiDphi/2.-(*besEMCGeometry).BSCAngleRotat);
00220     G4double ch=(dOp+ll)/cos((*besEMCGeometry).BSCPhiDphi)-cOp;
00221     G4double hi=(dOp+ll)*tan((*besEMCGeometry).BSCPhiDphi)-ij;
00222     G4double oh=sqrt(ch*ch+rr*rr-2*ch*rr*cos(180*deg-(*besEMCGeometry).BSCAngleRotat));
00223     G4double hoi=asin(sin(180*deg-oij)/oh*hi);
00224     G4double dok=asin(sin(180*deg-(*besEMCGeometry).BSCAngleRotat)/oh*ch);
00225     
00226     i=1;
00227     for(i=1;i<=(*besEMCGeometry).BSCNbPhi;i++)
00228     {
00229       rotateMatrix[i-1] = new G4RotationMatrix();
00230       rotateMatrix[i-1]->rotateZ(-(i-1)*(*besEMCGeometry).BSCPhiDphi
00231           -(*besEMCGeometry).BSCAngleRotat
00232           -(*besEMCGeometry).BSCPhiDphi/2.
00233           -hoi);
00234       rotateMatrix[i-1]->getAngleAxis(delta, axis);
00235       //G4cout << "The axis of crystals in the world system is: "
00236       //   << delta/deg << "(deg)(delta) "
00237       //<< axis  << "(Z axis)"<< G4endl;
00238       ox=oOp*cos(-90.*deg+(*besEMCGeometry).BSCAngleRotat
00239           +(i-1)*(*besEMCGeometry).BSCPhiDphi);
00240       oy=oOp*sin(-90.*deg+(*besEMCGeometry).BSCAngleRotat
00241           +(i-1)*(*besEMCGeometry).BSCPhiDphi);
00242       oz=0*cm;
00243       physiBSCPhi = new G4PVPlacement(rotateMatrix[i-1],
00244           G4ThreeVector(ox,oy,oz),
00245           logicBSCPhi,
00246           "BSCPhi",
00247           logicEMC,
00248           false,
00249           i-1);
00250     }
00251 */      
00252       /*  
00253   G4RotationMatrix *rotateMatrix[200];
00254   //  rotateMatrix = new G4RotationMatrix();
00255   //  rotateMatrix->rotateZ(BSCAngleRotat-BSCPhiDphi);
00256   G4double oOp,ox,oy,oz; 
00257   G4int i;
00258   G4double delta = 0*deg;
00259   G4ThreeVector axis = G4ThreeVector(0,0,0);
00260   oOp=(*besEMCGeometry).BSCRmin/sin(0.5*(*besEMCGeometry).BSCPhiDphi+90*deg)
00261     *sin((*besEMCGeometry).BSCAngleRotat);
00262   i=1;
00263   for(i=1;i<=(*besEMCGeometry).BSCNbPhi;i++)
00264     {
00265       rotateMatrix[i-1] = new G4RotationMatrix();
00266       rotateMatrix[i-1]->rotateZ(-(i-1)*(*besEMCGeometry).BSCPhiDphi
00267                                  +(*besEMCGeometry).BSCAngleRotat
00268                                  +(*besEMCGeometry).BSCPhiDphi/2.);
00269       rotateMatrix[i-1]->getAngleAxis(delta, axis);
00270       //G4cout << "The axis of crystals in the world system is: "
00271         //   << delta/deg << "(deg)(delta) "
00272              //<< axis  << "(Z axis)"<< G4endl;
00273         ox=oOp*cos(90.*deg-(*besEMCGeometry).BSCAngleRotat
00274                    +(i-1)*(*besEMCGeometry).BSCPhiDphi);
00275         oy=oOp*sin(90.*deg-(*besEMCGeometry).BSCAngleRotat
00276                    +(i-1)*(*besEMCGeometry).BSCPhiDphi);
00277         oz=0*cm;
00278         physiBSCPhi = new G4PVPlacement(rotateMatrix[i-1],
00279                                         G4ThreeVector(ox,oy,oz),
00280           logicBSCPhi,
00281                                         "BSCPhi",
00282                                         logicEMC,
00283                                         false,
00284                                         i);
00285         //G4cout << G4ThreeVector(ox/cm,oy/cm,oz/cm) <<"(cm)" << G4endl
00286           //   << (-(*besEMCGeometry).BSCAngleRotat+(i-1)*(*besEMCGeometry).BSCPhiDphi)/deg <<"(degree)" << G4endl;
00287      }*/
00288     //
00289     //Crystals
00290     //
00291 /*    G4double zHalfLength[50];
00292     G4double thetaAxis[50];
00293     G4double phiAxis[50];
00294     G4double yHalfLength1[50];
00295     G4double xHalfLength2[50];
00296     G4double xHalfLength1[50];
00297     G4double tanAlpha1[50];
00298     G4double yHalfLength2[50];
00299     G4double xHalfLength4[50];
00300     G4double xHalfLength3[50];
00301     G4double tanAlpha2[50];
00302     G4double xPosition[50];
00303     G4double yPosition[50];
00304     G4double zPosition[50];
00305     G4double thetaPosition[50];
00306     for(i=0;i<(*besEMCGeometry).BSCNbTheta;i++)
00307       {
00308               zHalfLength[i]  = (*besEMCGeometry).zHalfLength[i];
00309               thetaAxis[i]    = (*besEMCGeometry).thetaAxis[i];
00310               phiAxis[i]      = (*besEMCGeometry).phiAxis[i];
00311               yHalfLength1[i] = (*besEMCGeometry).yHalfLength1[i];
00312               xHalfLength2[i] = (*besEMCGeometry).xHalfLength2[i];
00313         xHalfLength1[i] = (*besEMCGeometry).xHalfLength1[i];
00314               tanAlpha1[i]    = (*besEMCGeometry).tanAlpha1[i];
00315               yHalfLength2[i] = (*besEMCGeometry).yHalfLength2[i];
00316               xHalfLength4[i] = (*besEMCGeometry).xHalfLength4[i];
00317               xHalfLength3[i] = (*besEMCGeometry).xHalfLength3[i];
00318               tanAlpha2[i]    = (*besEMCGeometry).tanAlpha2[i];
00319               xPosition[i]    = (*besEMCGeometry).xPosition[i];
00320               yPosition[i]    = (*besEMCGeometry).yPosition[i];
00321               zPosition[i]    = (*besEMCGeometry).zPosition[i];
00322               thetaPosition[i]= (*besEMCGeometry).thetaPosition[i];
00323       }
00324     
00325     besEMCGeometry->ModifyForCasing();
00326     
00327     solidBSCCrystal = new G4Trap("Crystal",
00328                                  100*cm, 100*deg, 100*deg,
00329                                  100*cm, 100*cm,  100*cm,  100*deg,
00330                                  100*cm, 100*cm,  100*cm,  100*deg);
00331     
00332     logicBSCCrystal = new G4LogicalVolume(solidBSCCrystal,
00333                                           fCrystalMaterial,
00334                                           "Crystal");
00335     
00336     crystalParam = new ExtBesCrystalParameterisation
00337     (startID,
00338      thetaNbCrystals,
00339      (*besEMCGeometry).BSCNbTheta*2,
00340      besEMCGeometry,
00341      verboseLevel);
00342 
00343     //---------------------------------------------------------------------------------
00344     //rear substance
00345     solidRear = new G4Box("RearBox",
00346         (*besEMCGeometry).rearBoxLength/2,
00347         (*besEMCGeometry).rearBoxLength/2,
00348         (*besEMCGeometry).rearBoxDz/2);
00349 
00350     logicRear = new G4LogicalVolume(solidRear,
00351         G4Material::GetMaterial("Air"),
00352         "RearBox");
00353 
00354     //organic glass
00355     solidOrgGlass = new G4Box("OrganicGlass",
00356         (*besEMCGeometry).orgGlassLengthX/2,
00357         (*besEMCGeometry).orgGlassLengthY/2,
00358         (*besEMCGeometry).orgGlassLengthZ/2);
00359 
00360     logicOrgGlass = new G4LogicalVolume(solidOrgGlass,
00361         organicGlass,
00362         "OrganicGlass");
00363 
00364     physiOrgGlass = new G4PVPlacement(0,
00365         G4ThreeVector(0,0,-((*besEMCGeometry).rearBoxDz-(*besEMCGeometry).orgGlassLengthZ)/2),
00366         logicOrgGlass,
00367         "OrganicGlass",
00368         logicRear,
00369         false,
00370         0);
00371 
00372     //casing
00373     solidCasingBox = new G4Box("CasingBox",
00374         (*besEMCGeometry).rearBoxLength/2,
00375         (*besEMCGeometry).rearBoxLength/2,
00376         (*besEMCGeometry).rearCasingThickness/2);
00377 
00378     solidAirHole = new G4Box("AirHole",
00379         (*besEMCGeometry).orgGlassLengthX/2,
00380         (*besEMCGeometry).orgGlassLengthY/2,
00381         (*besEMCGeometry).rearBoxDz/2);      //any value more than casing thickness
00382 
00383     solidRearCasing = new G4SubtractionSolid("RearCasing",
00384         solidCasingBox,
00385         solidAirHole,
00386         0,
00387         0);
00388 
00389     logicRearCasing = new G4LogicalVolume(solidRearCasing,
00390         rearCasingMaterial,
00391         "RearCasing");
00392 
00393     physiRearCasing = new G4PVPlacement(0,
00394         G4ThreeVector(0,0,-((*besEMCGeometry).rearBoxDz-(*besEMCGeometry).rearCasingThickness)/2),
00395         logicRearCasing,
00396         "RearCasing",
00397         logicRear,
00398         false,
00399         0);
00400 
00401     //Al Plate
00402     solidAlBox = new G4Box("AlBox",
00403         (*besEMCGeometry).rearBoxLength/2,
00404         (*besEMCGeometry).rearBoxLength/2,
00405         (*besEMCGeometry).AlPlateDz/2);
00406 
00407     solidAlPlate = new G4SubtractionSolid("AlPlate",
00408         solidAlBox,
00409         solidAirHole,
00410         0,
00411         0);
00412 
00413     logicAlPlate = new G4LogicalVolume(solidAlPlate,
00414         G4Material::GetMaterial("Aluminium"),
00415         "AlPlate");
00416 
00417     physiAlPlate = new G4PVPlacement(0,
00418         G4ThreeVector(0,0,-((*besEMCGeometry).rearBoxDz/2
00419                             -(*besEMCGeometry).rearCasingThickness
00420                             -(*besEMCGeometry).AlPlateDz/2)),
00421         logicAlPlate,
00422         "AlPlate",
00423         logicRear,
00424         false,
00425         0);
00426 
00427     //photodiode
00428     solidPD = new G4Box("PD",
00429         (*besEMCGeometry).PDLengthX,     //two PD
00430         (*besEMCGeometry).PDLengthY/2,
00431         (*besEMCGeometry).PDLengthZ/2);
00432 
00433     logicPD = new G4LogicalVolume(solidPD,
00434         G4Material::GetMaterial("Silicon"),
00435         "PD");
00436 
00437     physiPD = new G4PVPlacement(0,
00438          G4ThreeVector(0,0,-((*besEMCGeometry).rearBoxDz/2
00439                              -(*besEMCGeometry).orgGlassLengthZ
00440                              -(*besEMCGeometry).PDLengthZ/2)),
00441          logicPD,
00442          "PD",
00443          logicRear,
00444          false,
00445          0);
00446 
00447     //preamplifier box
00448     solidPreAmpBox = new G4Box("PreAmpBox",
00449         (*besEMCGeometry).rearBoxLength/2,
00450         (*besEMCGeometry).rearBoxLength/2,
00451         (*besEMCGeometry).PABoxDz/2);
00452 
00453     logicPreAmpBox = new G4LogicalVolume(solidPreAmpBox,
00454         G4Material::GetMaterial("Aluminium"),
00455         "PreAmpBox");
00456 
00457     physiPreAmpBox = new G4PVPlacement(0,
00458         G4ThreeVector(0,0,-((*besEMCGeometry).rearBoxDz/2
00459                             -(*besEMCGeometry).rearCasingThickness
00460                             -(*besEMCGeometry).AlPlateDz
00461                             -(*besEMCGeometry).PABoxDz/2)),
00462         logicPreAmpBox,
00463         "PreAmpBox",
00464         logicRear,
00465         false,
00466         0);
00467 
00468     //air in preamplifier box
00469     solidAirInPABox = new G4Box("AirInPABox",
00470         (*besEMCGeometry).rearBoxLength/2-(*besEMCGeometry).PABoxThickness,
00471         (*besEMCGeometry).rearBoxLength/2-(*besEMCGeometry).PABoxThickness,
00472         (*besEMCGeometry).PABoxDz/2-(*besEMCGeometry).PABoxThickness);
00473 
00474     logicAirInPABox = new G4LogicalVolume(solidAirInPABox,
00475         G4Material::GetMaterial("Air"),
00476         "AirInPABox");
00477     
00478     physiAirInPABox = new G4PVPlacement(0,
00479         0,
00480         logicAirInPABox,
00481         "AirInPABox",
00482         logicPreAmpBox,
00483         false,
00484         0);
00485 
00486     //stainless steel for hanging the crystal
00487     solidHangingPlate = new G4Box("HangingPlate",
00488         (*besEMCGeometry).rearBoxLength/2,
00489         (*besEMCGeometry).rearBoxLength/2,
00490         (*besEMCGeometry).HangingPlateDz/2);
00491 
00492     logicHangingPlate = new G4LogicalVolume(solidHangingPlate,stainlessSteel,"HangingPlate");
00493 
00494     physiHangingPlate = new G4PVPlacement(0,
00495         G4ThreeVector(0,0,-((*besEMCGeometry).rearBoxDz/2
00496             -(*besEMCGeometry).rearCasingThickness
00497             -(*besEMCGeometry).AlPlateDz
00498             -(*besEMCGeometry).PABoxDz
00499             -(*besEMCGeometry).HangingPlateDz/2)),
00500         logicHangingPlate,
00501         "HangingPlate",
00502         logicRear,
00503         false,
00504         0);
00505 
00506     //water pipe
00507     solidWaterPipe = new G4Tubs("WaterPipe",
00508         0,
00509         (*besEMCGeometry).waterPipeDr,
00510         (*besEMCGeometry).BSCDz,
00511         0.*deg,
00512         360.*deg);
00513 
00514     logicWaterPipe = new G4LogicalVolume(solidWaterPipe,stainlessSteel,"WaterPipe");
00515     
00516     physiWaterPipe = new G4PVPlacement(0,
00517         G4ThreeVector((*besEMCGeometry).cablePosX[0]-2*(*besEMCGeometry).cableDr,
00518           (*besEMCGeometry).cablePosY[0]-(*besEMCGeometry).cableDr-(*besEMCGeometry).waterPipeDr,
00519           0),
00520         logicWaterPipe,
00521         "WaterPipe",
00522         logicBSCPhi,
00523         false,
00524         0);
00525     //---------------------------------------------------------------------------------
00526     
00527     //
00528     //Theta Cell
00529     //
00530     G4String nameCrystalAndCasing="CrystalAndCasing";
00531     G4int id=0;     //ID of crystals after distinguishing left and right
00532     for(i=startID;i<=thetaNbCrystals;i++)
00533       {
00534         if(i>(*besEMCGeometry).BSCNbTheta)
00535           {
00536             id=i-(*besEMCGeometry).BSCNbTheta-1;
00537             solidBSCTheta = new G4Trap(nameCrystalAndCasing,
00538                                        zHalfLength[id],
00539                                      thetaAxis[id],
00540                                        -phiAxis[id],
00541                                        yHalfLength1[id],
00542                                        xHalfLength2[id],
00543                                        xHalfLength1[id],
00544                                        -tanAlpha1[id],
00545                                        yHalfLength2[id],
00546                                        xHalfLength4[id],
00547                                        xHalfLength3[id],
00548                                        -tanAlpha2[id]);
00549             
00550           logicBSCTheta = new G4LogicalVolume(solidBSCTheta,
00551                                               fCasingMaterial,
00552                                               nameCrystalAndCasing);
00553           
00554           rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1] = new G4RotationMatrix();
00555           rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1]->rotateZ(-90*deg);
00556           rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1]
00557             ->rotateX(-thetaPosition[id]);
00558           physiBSCTheta = 
00559             new G4PVPlacement(rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1],
00560                               G4ThreeVector(xPosition[id],
00561                                             yPosition[id],
00562                                             zPosition[id]),
00563                               nameCrystalAndCasing,
00564                               logicBSCTheta,
00565                               physiBSCPhi,
00566                               false,
00567                               thetaNbCrystals-i);
00568           if(logicBSCTheta)
00569             logicBSCTheta->SetVisAttributes(G4VisAttributes::Invisible);
00570 
00571     if(id<(*besEMCGeometry).BSCNbTheta-1)
00572     {
00573       physiRear = new G4PVPlacement(rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1],
00574         G4ThreeVector((*besEMCGeometry).rearBoxPosX[id],
00575           (*besEMCGeometry).rearBoxPosY[id],
00576           (*besEMCGeometry).rearBoxPosZ[id]),
00577         "RearBox",
00578         logicRear,
00579         physiBSCPhi,
00580         false,
00581         thetaNbCrystals-i);
00582 
00583       solidOCGirder = new G4Cons("OpenningCutGirder",
00584         (*besEMCGeometry).OCGirderRmin1[id],
00585         (*besEMCGeometry).BSCPhiRmax,
00586         (*besEMCGeometry).OCGirderRmin2[id],
00587         (*besEMCGeometry).BSCPhiRmax,
00588         (*besEMCGeometry).OCGirderDz[id]/2,
00589         360.*deg-(*besEMCGeometry).OCGirderAngle/2,
00590         (*besEMCGeometry).OCGirderAngle/2);
00591 
00592       logicOCGirder = new G4LogicalVolume(solidOCGirder,stainlessSteel,"OpenningCutGirder");
00593       //logicOCGirder->SetVisAttributes(G4VisAttributes::Invisible);
00594     
00595       physiOCGirder = new G4PVPlacement(0,
00596         G4ThreeVector(0,0,(*besEMCGeometry).OCGirderPosZ[id]),
00597         logicOCGirder,
00598         "OpenningCutGirder",
00599         logicBSCPhi,
00600         false,
00601         0);
00602       
00603       G4double zLength = (*besEMCGeometry).OCGirderPosZ[id+1]-(*besEMCGeometry).OCGirderPosZ[id]
00604         -(*besEMCGeometry).OCGirderDz[id+1]/2-(*besEMCGeometry).OCGirderDz[id]/2;
00605       G4double zPosition = (*besEMCGeometry).OCGirderPosZ[id+1]-(*besEMCGeometry).OCGirderDz[id+1]/2-zLength/2;
00606       
00607       solidOCGirder = new G4Cons("OpenningCutGirder",
00608           (*besEMCGeometry).OCGirderRmin2[id],
00609           (*besEMCGeometry).BSCPhiRmax,
00610           (*besEMCGeometry).OCGirderRmin1[id+1],
00611           (*besEMCGeometry).BSCPhiRmax,
00612           zLength/2,
00613           360.*deg-(*besEMCGeometry).OCGirderAngle/2,
00614           (*besEMCGeometry).OCGirderAngle/2);
00615       
00616       logicOCGirder = new G4LogicalVolume(solidOCGirder,stainlessSteel,"OpenningCutGirder");
00617       //logicOCGirder->SetVisAttributes(G4VisAttributes::Invisible);
00618 
00619       physiOCGirder = new G4PVPlacement(0,
00620           G4ThreeVector(0,0,zPosition),
00621           logicOCGirder,
00622           "OpenningCutGirder",
00623           logicBSCPhi,
00624           false,
00625           0);
00626     }
00627     
00628     solidCable = new G4Tubs("BSCCable",
00629         0,
00630         (*besEMCGeometry).cableDr,
00631         (*besEMCGeometry).cableLength[id]/2,
00632         0.*deg,
00633         360.*deg);
00634 
00635     logicCable = new G4LogicalVolume(solidCable,cable,"BSCCable");
00636 
00637     physiCable = new G4PVPlacement(0,
00638         G4ThreeVector((*besEMCGeometry).cablePosX[id],
00639           (*besEMCGeometry).cablePosY[id],
00640           (*besEMCGeometry).cablePosZ[id]),
00641         logicCable,
00642         "BSCCable",
00643         logicBSCPhi,
00644         false,
00645         0);
00646     //logicCable->SetVisAttributes(G4VisAttributes::Invisible);
00647   
00648           }
00649         else
00650           {
00651             id=(*besEMCGeometry).BSCNbTheta-i;
00652             solidBSCTheta = new G4Trap(nameCrystalAndCasing,
00653                                        zHalfLength[id],
00654                                        thetaAxis[id],
00655                                        phiAxis[id],
00656                                        yHalfLength1[id],
00657                                        xHalfLength1[id],
00658                                        xHalfLength2[id],
00659                                        tanAlpha1[id],
00660                                        yHalfLength2[id],
00661                                        xHalfLength3[id],
00662                                        xHalfLength4[id],
00663                                        tanAlpha2[id]);
00664             
00665             logicBSCTheta = new G4LogicalVolume(solidBSCTheta,
00666                                                 fCasingMaterial,
00667                                                 nameCrystalAndCasing);
00668             
00669             rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1] = new G4RotationMatrix();
00670             rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1]->rotateZ(-90*deg);
00671             rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1]
00672               ->rotateX(-180*deg+thetaPosition[id]);
00673             physiBSCTheta = 
00674               new G4PVPlacement(rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1],
00675                                 G4ThreeVector(xPosition[id],
00676           yPosition[id],
00677           -zPosition[id]),
00678                                 nameCrystalAndCasing,
00679                                 logicBSCTheta,
00680                                 physiBSCPhi,
00681                                 false,
00682                                 thetaNbCrystals-i);
00683             if(logicBSCTheta)
00684               {
00685                 //G4VisAttributes* rightVisAtt= new G4VisAttributes(G4Colour(1.0,0.,0.));
00686                 //rightVisAtt->SetVisibility(true);
00687                 //logicBSCTheta->SetVisAttributes(rightVisAtt);
00688                 //logicBSCTheta->SetVisAttributes(G4VisAttributes::Invisible);
00689               }
00690       
00691       if(id<(*besEMCGeometry).BSCNbTheta-1)
00692       {
00693     physiRear = new G4PVPlacement(rotateMatrix[(*besEMCGeometry).BSCNbPhi+i-1],
00694         G4ThreeVector((*besEMCGeometry).rearBoxPosX[id],
00695           (*besEMCGeometry).rearBoxPosY[id],
00696           -(*besEMCGeometry).rearBoxPosZ[id]),
00697         "RearBox",
00698         logicRear,
00699         physiBSCPhi,
00700         false,
00701         thetaNbCrystals-i);
00702     
00703           solidOCGirder = new G4Cons("OpenningCutGirder",
00704         (*besEMCGeometry).OCGirderRmin2[id],
00705         (*besEMCGeometry).BSCPhiRmax,
00706         (*besEMCGeometry).OCGirderRmin1[id],
00707         (*besEMCGeometry).BSCPhiRmax,
00708         (*besEMCGeometry).OCGirderDz[id]/2,
00709         360.*deg-(*besEMCGeometry).OCGirderAngle/2,
00710         (*besEMCGeometry).OCGirderAngle/2);
00711 
00712     logicOCGirder = new G4LogicalVolume(solidOCGirder,stainlessSteel,"OpenningCutGirder");
00713     //logicOCGirder->SetVisAttributes(G4VisAttributes::Invisible);
00714     
00715     physiOCGirder = new G4PVPlacement(0,
00716         G4ThreeVector(0,0,-(*besEMCGeometry).OCGirderPosZ[id]),
00717         logicOCGirder,
00718         "OpenningCutGirder",
00719         logicBSCPhi,
00720         false,
00721         0);
00722     
00723     G4double zLength = (*besEMCGeometry).OCGirderPosZ[id+1]-(*besEMCGeometry).OCGirderPosZ[id]
00724       -(*besEMCGeometry).OCGirderDz[id+1]/2-(*besEMCGeometry).OCGirderDz[id]/2;
00725     G4double zPosition = (*besEMCGeometry).OCGirderPosZ[id+1]-(*besEMCGeometry).OCGirderDz[id+1]/2-zLength/2;
00726       
00727     solidOCGirder = new G4Cons("OpenningCutGirder",
00728         (*besEMCGeometry).OCGirderRmin1[id+1],
00729         (*besEMCGeometry).BSCPhiRmax,
00730         (*besEMCGeometry).OCGirderRmin2[id],
00731         (*besEMCGeometry).BSCPhiRmax,
00732         zLength/2,
00733         360.*deg-(*besEMCGeometry).OCGirderAngle/2,
00734         (*besEMCGeometry).OCGirderAngle/2);
00735       
00736     logicOCGirder = new G4LogicalVolume(solidOCGirder,stainlessSteel,"OpenningCutGirder");
00737     //logicOCGirder->SetVisAttributes(G4VisAttributes::Invisible);
00738 
00739     physiOCGirder = new G4PVPlacement(0,
00740         G4ThreeVector(0,0,-zPosition),
00741         logicOCGirder,
00742         "OpenningCutGirder",
00743         logicBSCPhi,
00744         false,
00745         0);
00746       }
00747     
00748           solidCable = new G4Tubs("BSCCable",
00749         0,
00750         (*besEMCGeometry).cableDr,
00751         (*besEMCGeometry).cableLength[id]/2,
00752         0.*deg,
00753         360.*deg);
00754 
00755     logicCable = new G4LogicalVolume(solidCable,cable,"BSCCable");
00756 
00757     physiCable = new G4PVPlacement(0,
00758         G4ThreeVector((*besEMCGeometry).cablePosX[id],
00759           (*besEMCGeometry).cablePosY[id],
00760           -(*besEMCGeometry).cablePosZ[id]),
00761         logicCable,
00762         "BSCCable",
00763         logicBSCPhi,
00764         false,
00765         0);
00766     //logicCable->SetVisAttributes(G4VisAttributes::Invisible);
00767           }
00768 
00769         physiBSCCrystal = new G4PVParameterised(
00770                                               "Crystal",
00771                                               logicBSCCrystal,
00772                                               physiBSCTheta,
00773                                               kZAxis,
00774                                               1,//for this method,it must be 1.
00775                                               crystalParam);
00776         (*besEMCGeometry).physiBSCCrystal[i]=physiBSCCrystal;
00777         //G4cout << (*besEMCGeometry).physiBSCCrystal[i] << G4endl;
00778         physiBSCCrystal->SetCopyNo(thetaNbCrystals-i);
00779         if(verboseLevel>4)
00780         G4cout << "BesEmcConstruction*****************************"<< G4endl
00781                << "point of crystal =" <<physiBSCCrystal << G4endl
00782           //           << "point of mother  =" <<physiBSCCrystal->GetMotherPhysical() << G4endl
00783                << "point of excepted=" <<physiBSCTheta << G4endl;
00784         //G4Exception("BesEMCConstruction::Construct() starting............");
00785       }
00786 */    
00787     //                               
00788     // Sensitive Detectors: Absorber and Gap
00789     //
00790     //if (logicBSCCrystal)
00791     //  logicBSCCrystal->SetSensitiveDetector(besEMCSD);
00792     
00793     //                                        
00794     // Visualization attributes
00795     //
00796     /*    if(logicEMC)
00797       {
00798         G4VisAttributes* bscVisAtt= new G4VisAttributes(G4Colour(0.5,0.5,0.5));
00799         bscVisAtt->SetVisibility(false);
00800         logicEMC->SetVisAttributes(bscVisAtt);
00801         //logicBSC->SetVisAttributes(G4VisAttributes::Invisible);
00802       }
00803     if(logicBSCPhi)
00804       {
00805         G4VisAttributes* rightVisAtt= new G4VisAttributes(G4Colour(1.0,0.,1.0));
00806         rightVisAtt->SetVisibility(false);
00807         logicBSCPhi->SetVisAttributes(rightVisAtt);
00808         //logicBSCPhi->SetVisAttributes(G4VisAttributes::Invisible);
00809       }
00810     if(logicBSCCrystal)
00811       {
00812         G4VisAttributes* crystalVisAtt= new G4VisAttributes(G4Colour(0,0,1.0));
00813         crystalVisAtt->SetVisibility(true);
00814         logicBSCCrystal->SetVisAttributes(crystalVisAtt);
00815         //logicBSCCrystal->SetVisAttributes(G4VisAttributes::Invisible);
00816       }
00817     if(logicOrgGlass)
00818     {
00819       G4VisAttributes* glassVisAtt = new G4VisAttributes(G4Colour(0.5,1.0,1.0));
00820       glassVisAtt->SetVisibility(false);
00821       logicOrgGlass->SetVisAttributes(glassVisAtt);
00822     }
00823     if(logicRearCasing)
00824     {
00825       logicRearCasing->SetVisAttributes(G4VisAttributes::Invisible);
00826     }
00827     if(logicAlPlate)
00828     {
00829       G4VisAttributes* AlPlateVisAtt = new G4VisAttributes(G4Colour(0.9,0.9,1.0));
00830       AlPlateVisAtt->SetVisibility(true);
00831       logicAlPlate->SetVisAttributes(AlPlateVisAtt);
00832       logicAlPlate->SetVisAttributes(G4VisAttributes::Invisible);
00833     }
00834     logicRear->SetVisAttributes(G4VisAttributes::Invisible);
00835     logicPreAmpBox->SetVisAttributes(G4VisAttributes::Invisible);
00836     logicHangingPlate->SetVisAttributes(G4VisAttributes::Invisible);
00837     logicAirInPABox->SetVisAttributes(G4VisAttributes::Invisible);
00838     logicPD->SetVisAttributes(G4VisAttributes::Invisible);
00839     logicWaterPipe->SetVisAttributes(G4VisAttributes::Invisible);
00840     //
00841     //always return the physical World
00842     //
00843     if(verboseLevel>0)PrintEMCParameters();
00844     //  return physiBSC;
00845     */
00846 //    ConstructEndGeometry(logicEMC);
00847 //    ConstructSPFrame(logicEMC,besEMCGeometry);  
00848 }

void ExtBesEmcConstruction::ConstructEndGeometry G4LogicalVolume *   ) 
 

void ExtBesEmcConstruction::ConstructEndGeometry G4LogicalVolume *   ) 
 

00981 {
00982   G4Material* fCrystalMaterial = G4Material::GetMaterial("Cesiumiodide");
00983   //  G4VisAttributes* crystalVisAtt= new G4VisAttributes(G4Colour(0.5,0,1.0));
00984   //crystalVisAtt->SetVisibility(true);
00985   //G4VisAttributes* endPhiVisAtt= new G4VisAttributes(G4Colour(0,1.0,0));
00986   //endPhiVisAtt->SetVisibility(false);
00987   
00988   //world volume of endcap
00989   //east end
00990   solidEnd = new G4Cons("EndWorld",(*emcEnd).WorldRmin1,(*emcEnd).WorldRmax1,(*emcEnd).WorldRmin2,(*emcEnd).WorldRmax2,
00991                   (*emcEnd).WorldDz/2,0.*deg,360.*deg);
00992   logicEnd = new G4LogicalVolume(solidEnd, G4Material::GetMaterial("Air"), "EndWorld", 0, 0, 0);
00993   physiEnd = new G4PVPlacement(0,               // no rotation
00994                 G4ThreeVector(0,0,(*emcEnd).WorldZPosition),
00995                 logicEnd,               // its logical volume
00996                 "EndWorld",             // its name
00997                 logicEMC,               // its mother  volume
00998                 false,                  // no boolean operations
00999                 0);                     // no field specific to volume
01000   //  if(logicEnd)
01001   //  logicEnd->SetVisAttributes(G4VisAttributes::Invisible);
01002 
01003   
01004   //west end
01005   G4RotationMatrix *rotateEnd = new G4RotationMatrix();
01006   rotateEnd->rotateY(180.*deg);
01007   physiEnd = new G4PVPlacement(rotateEnd,
01008      G4ThreeVector(0,0,-(*emcEnd).WorldZPosition),
01009      logicEnd,
01010      "EndWorld",
01011      logicEMC,
01012      false,
01013      2);
01014 
01016   // emc endcap sectors (east)                                            //
01018   //                                    20mm gap                          // 
01019   //                                      ||                              //
01020   //                                \   7 || 6   /                        //
01021   //                           -   8 \    ||    / 5   -                   //
01022   //                             -    \   ||   /    -                     //
01023   //                        _  9   -   \  ||  /   -   4  _                //
01024   //                          - _    -  \ || /  -    _ -                  //
01025   //                              - _  - \||/ -  _ -                      //
01026   //                         10        - -||- -         3                 //
01027   //                      ----------------||----------------              //
01028   //                         11        - -||- -         2                 //
01029   //                              _ -  - /||\ -  - _                      //
01030   //                          _ -    -  / || \  -    - _                  //
01031   //                        -  12  -   /  ||  \   -   1  -                //
01032   //                             -    /   ||   \    -                     //
01033   //                           -  13 /    ||    \  0  -                   //
01034   //                                /  14 || 15  \                        //
01035   //                                      ||                              //
01037 
01038   // 1/16 of endcap world,which has some symmetry
01039   // sector 0-6,8-14
01040   solidEndPhi = new G4Cons("EndPhi",(*emcEnd).WorldRmin1,(*emcEnd).WorldRmax1,(*emcEnd).WorldRmin2,(*emcEnd).WorldRmax2,
01041                      (*emcEnd).WorldDz/2,0*deg,22.5*deg);
01042   logicEndPhi = new G4LogicalVolume(solidEndPhi, G4Material::GetMaterial("Air"), "EndPhi", 0, 0, 0);
01043   for(G4int i=0;i<14;i++)
01044   {
01045     if((i!=6)&&(i!=7))
01046     {
01047       G4RotationMatrix *rotatePhi = new G4RotationMatrix();
01048       rotatePhi->rotateZ(-i*22.5*deg+67.5*deg);
01049       physiEndPhi = new G4PVPlacement(rotatePhi,0,logicEndPhi,"EndPhi",logicEnd,false,i);
01050     }
01051   }
01052   //if(logicEndPhi)
01053   //  logicEndPhi->SetVisAttributes(endPhiVisAtt);
01054   
01055   for(G4int i=0;i<35;i++)
01056   {
01057     G4int copyNb = ComputeEndCopyNb(i);
01058     
01059     solidEndCasing = new G4IrregBox("EndCasing",(*emcEnd).fPnt[i]);
01060     logicEndCasing = new G4LogicalVolume(solidEndCasing,fCasingMaterial,"EndCasing");
01061     physiEndCasing = new G4PVPlacement(0,0,logicEndCasing,"EndCasing",logicEndPhi,false,copyNb);
01062     
01063     emcEnd->ModifyForCasing((*emcEnd).fPnt[i],i);
01064     solidEndCrystal = new G4IrregBox("EndCrystal",(*emcEnd).cryPoint);
01065     logicEndCrystal = new G4LogicalVolume(solidEndCrystal,fCrystalMaterial,"EndCrystal");
01066     physiEndCrystal = new G4PVPlacement(0,0,logicEndCrystal,"EndCrystal",logicEndCasing,false,copyNb);
01067     
01068     //logicEndCasing->SetVisAttributes(G4VisAttributes::Invisible);
01069     //logicEndCrystal->SetVisAttributes(crystalVisAtt);
01070     //logicEndCrystal->SetSensitiveDetector(besEMCSD);
01071   }
01072 
01073   
01074   // the top area which has 20 mm gap
01075   // sector 6,14
01076   solidEndPhi = new G4Cons("EndPhi",(*emcEnd).WorldRmin1,(*emcEnd).WorldRmax1,(*emcEnd).WorldRmin2,(*emcEnd).WorldRmax2,  
01077                      (*emcEnd).WorldDz/2,67.5*deg,22.5*deg);
01078   logicEndPhi = new G4LogicalVolume(solidEndPhi, G4Material::GetMaterial("Air"), "EndPhi", 0, 0, 0);
01079   for(G4int i=0;i<2;i++)
01080   {
01081     G4RotationMatrix *rotatePhi = new G4RotationMatrix();
01082     rotatePhi->rotateZ(-i*180.*deg);
01083     physiEndPhi = new G4PVPlacement(rotatePhi,0,logicEndPhi,"EndPhi",logicEnd,false,i*8+6);
01084   }
01085   //if(logicEndPhi)
01086   //  logicEndPhi->SetVisAttributes(endPhiVisAtt);
01087 
01088   for(G4int i=0;i<35;i++)
01089   {
01090     G4int copyNb = ComputeEndCopyNb(i);
01091     solidEndCasing = new G4IrregBox("EndCasing",(*emcEnd).fPnt1[i]);
01092     logicEndCasing = new G4LogicalVolume(solidEndCasing,fCasingMaterial,"EndCasing");
01093     physiEndCasing = new G4PVPlacement(0,0,logicEndCasing,"EndCasing",logicEndPhi,false,copyNb);
01094 
01095     emcEnd->ModifyForCasing((*emcEnd).fPnt1[i],i);
01096     solidEndCrystal = new G4IrregBox("EndCrystal",(*emcEnd).cryPoint);
01097     logicEndCrystal = new G4LogicalVolume(solidEndCrystal,fCrystalMaterial,"EndCrystal");
01098     physiEndCrystal = new G4PVPlacement(0,0,logicEndCrystal,"EndCrystal",logicEndCasing,false,copyNb);
01099     
01100     //logicEndCasing->SetVisAttributes(G4VisAttributes::Invisible);
01101     //logicEndCrystal->SetVisAttributes(crystalVisAtt);
01102     //logicEndCrystal->SetSensitiveDetector(besEMCSD);
01103   }
01104 
01105   (*emcEnd).ReflectX();
01106 
01107   // sector 7,15
01108   for(G4int i=0;i<35;i++)
01109     for (G4int j=0;j<8;j++)
01110       (*emcEnd).fPnt1[i][j].rotateZ(-90.*deg);
01111   
01112   solidEndPhi = new G4Cons("EndPhi",(*emcEnd).WorldRmin1,(*emcEnd).WorldRmax1,(*emcEnd).WorldRmin2,(*emcEnd).WorldRmax2,
01113                            (*emcEnd).WorldDz/2,0*deg,22.5*deg);
01114   logicEndPhi = new G4LogicalVolume(solidEndPhi, G4Material::GetMaterial("Air"), "EndPhi", 0, 0, 0);
01115   for(G4int i=0;i<2;i++)
01116   {
01117     G4RotationMatrix *rotatePhi = new G4RotationMatrix();
01118     rotatePhi->rotateZ(-i*180.*deg-90.*deg);
01119     physiEndPhi = new G4PVPlacement(rotatePhi,0,logicEndPhi,"EndPhi",logicEnd,false,i*8+7);
01120   }
01121   //if(logicEndPhi)
01122   //  logicEndPhi->SetVisAttributes(endPhiVisAtt);
01123 
01124   for(G4int i=0;i<35;i++)
01125   {
01126     G4int copyNb = ComputeEndCopyNb(i);
01127     solidEndCasing = new G4IrregBox("EndCasing",(*emcEnd).fPnt1[i]);
01128     logicEndCasing = new G4LogicalVolume(solidEndCasing,fCrystalMaterial,"EndCasing");
01129     physiEndCasing = new G4PVPlacement(0,0,logicEndCasing,"EndCasing",logicEndPhi,false,copyNb);
01130 
01131     emcEnd->ModifyForCasing((*emcEnd).fPnt1[i],i);
01132     solidEndCrystal = new G4IrregBox("EndCrystal",(*emcEnd).cryPoint);
01133     logicEndCrystal = new G4LogicalVolume(solidEndCrystal,fCrystalMaterial,"EndCrystal");
01134     physiEndCrystal = new G4PVPlacement(0,0,logicEndCrystal,"EndCrystal",logicEndCasing,false,copyNb);
01135     
01136     //logicEndCasing->SetVisAttributes(G4VisAttributes::Invisible);
01137     //logicEndCrystal->SetVisAttributes(crystalVisAtt);
01138     //logicEndCrystal->SetSensitiveDetector(besEMCSD);
01139   }
01140 }

void ExtBesEmcConstruction::ConstructSPFrame G4LogicalVolume *  ,
ExtBesEmcGeometry
 

void ExtBesEmcConstruction::ConstructSPFrame G4LogicalVolume *  ,
ExtBesEmcGeometry
 

01144 {
01145   //G4VisAttributes* ringVisAtt= new G4VisAttributes(G4Colour(0.5,0.25,0.));
01146   //ringVisAtt->SetVisibility(false);
01147   
01148   solidSupportBar = new G4Tubs("SupportBar",
01149       (*besEMCGeometry).BSCRmax+(*besEMCGeometry).SPBarThickness1,
01150       (*besEMCGeometry).BSCRmax+(*besEMCGeometry).SPBarThickness+(*besEMCGeometry).SPBarThickness1,
01151       (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3+(*besEMCGeometry).EndRingDz,
01152       0.*deg,
01153       360.*deg);
01154 
01155   logicSupportBar = new G4LogicalVolume(solidSupportBar,stainlessSteel,"SupportBar");
01156 
01157   physiSupportBar = new G4PVPlacement(0,0,logicSupportBar,"SupportBar",logicEMC,false,0);
01158 
01159   solidSupportBar1 = new G4Tubs("SupportBar1",
01160       (*besEMCGeometry).BSCRmax,
01161       (*besEMCGeometry).BSCRmax+(*besEMCGeometry).SPBarThickness1,
01162       (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3,
01163       (*besEMCGeometry).BSCPhiDphi-(*besEMCGeometry).SPBarDphi/2,
01164       (*besEMCGeometry).SPBarDphi);
01165 
01166   logicSupportBar1 = new G4LogicalVolume(solidSupportBar1,stainlessSteel,"SupportBar1");
01167 
01168   for(G4int i=0;i<(*besEMCGeometry).BSCNbPhi/2;i++)
01169   {
01170     G4RotationMatrix *rotateSPBar = new G4RotationMatrix();
01171     rotateSPBar->rotateZ((*besEMCGeometry).BSCPhiDphi-i*2*(*besEMCGeometry).BSCPhiDphi);
01172     physiSupportBar1 = new G4PVPlacement(rotateSPBar,0,logicSupportBar1,"SupportBar1",logicEMC,false,0);
01173   }
01174 
01175   //end ring
01176   solidEndRing = new G4Tubs("EndRing",
01177       (*besEMCGeometry).EndRingRmin,
01178       (*besEMCGeometry).EndRingRmin+(*besEMCGeometry).EndRingDr/2,
01179       (*besEMCGeometry).EndRingDz/2,
01180       0.*deg,
01181       360.*deg);
01182 
01183   solidGear = new G4Tubs("Gear",
01184       (*besEMCGeometry).EndRingRmin+(*besEMCGeometry).EndRingDr/2,
01185       (*besEMCGeometry).EndRingRmin+(*besEMCGeometry).EndRingDr,
01186       (*besEMCGeometry).EndRingDz/2,
01187       0.*deg,
01188       (*besEMCGeometry).BSCPhiDphi);
01189 
01190   //taper ring
01191   solidTaperRing1 = new G4Tubs("TaperRing1",
01192       (*besEMCGeometry).TaperRingRmin1,
01193       (*besEMCGeometry).TaperRingRmin1+(*besEMCGeometry).TaperRingThickness1,
01194       (*besEMCGeometry).TaperRingInnerLength/2,
01195       0.*deg,
01196       360.*deg);
01197 
01198   solidTaperRing2 = new G4Cons("TaperRing2",
01199       (*besEMCGeometry).TaperRingRmin1,
01200       (*besEMCGeometry).TaperRingRmin1+(*besEMCGeometry).TaperRingDr,
01201       (*besEMCGeometry).TaperRingRmin2,
01202       (*besEMCGeometry).TaperRingRmin2+(*besEMCGeometry).TaperRingDr,
01203       (*besEMCGeometry).TaperRingDz/2,
01204       0.*deg,
01205       360.*deg);
01206   
01207   solidTaperRing3 = new G4Cons("TaperRing3",
01208       (*besEMCGeometry).BSCRmax2,
01209       (*besEMCGeometry).BSCRmax2+(*besEMCGeometry).TaperRingOuterLength1,
01210       (*besEMCGeometry).TaperRingRmin2+(*besEMCGeometry).TaperRingDr,
01211       (*besEMCGeometry).TaperRingRmin2+(*besEMCGeometry).TaperRingDr+(*besEMCGeometry).TaperRingOuterLength,
01212       (*besEMCGeometry).TaperRingThickness3/2,
01213       0.*deg,
01214       360.*deg);
01215 
01216   logicEndRing = new G4LogicalVolume(solidEndRing,stainlessSteel,"EmcEndRing");
01217   logicGear = new G4LogicalVolume(solidGear,stainlessSteel,"Gear");
01218   logicTaperRing1 = new G4LogicalVolume(solidTaperRing1,stainlessSteel,"TaperRing1");
01219   logicTaperRing2 = new G4LogicalVolume(solidTaperRing2,stainlessSteel,"TaperRing2");
01220   logicTaperRing3 = new G4LogicalVolume(solidTaperRing3,stainlessSteel,"TaperRing3");
01221 
01222   for(G4int i=0;i<2;i++)
01223   {
01224     G4RotationMatrix *rotateSPRing = new G4RotationMatrix();
01225     G4double zEndRing,z1,z2,z3;
01226     if(i==0)
01227     {
01228       zEndRing = (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3+(*besEMCGeometry).EndRingDz/2;
01229       z1 = (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3
01230         -(*besEMCGeometry).TaperRingDz-(*besEMCGeometry).TaperRingInnerLength/2;
01231       z2 = (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3-(*besEMCGeometry).TaperRingDz/2;
01232       z3 = (*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3/2;
01233     }
01234     else
01235     {
01236       rotateSPRing->rotateY(180.*deg);
01237       zEndRing = -((*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3+(*besEMCGeometry).EndRingDz/2);
01238       z1 = -((*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3
01239         -(*besEMCGeometry).TaperRingDz-(*besEMCGeometry).TaperRingInnerLength/2);
01240       z2 = -((*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3-(*besEMCGeometry).TaperRingDz/2);
01241       z3 = -((*besEMCGeometry).BSCDz+(*besEMCGeometry).TaperRingThickness3/2);
01242     }
01243     
01244     physiEndRing = new G4PVPlacement(rotateSPRing,G4ThreeVector(0,0,zEndRing),
01245         logicEndRing,"EndRing",logicEMC,false,0);
01246     
01247     for(G4int j=0;j<(*besEMCGeometry).BSCNbPhi/2;j++)
01248     {
01249       G4RotationMatrix *rotateGear = new G4RotationMatrix();
01250       rotateGear->rotateZ((*besEMCGeometry).BSCPhiDphi/2-j*2*(*besEMCGeometry).BSCPhiDphi);
01251       physiGear = new G4PVPlacement(rotateGear,G4ThreeVector(0,0,zEndRing),
01252           logicGear,"Gear",logicEMC,false,0);
01253     }
01254     
01255     physiTaperRing1 = new G4PVPlacement(rotateSPRing,G4ThreeVector(0,0,z1),
01256         logicTaperRing1,"TaperRing1",logicEMC,false,0);
01257    
01258     physiTaperRing2 = new G4PVPlacement(rotateSPRing,G4ThreeVector(0,0,z2),
01259         logicTaperRing2,"TaperRing2",logicEMC,false,0);
01260   
01261     physiTaperRing3 = new G4PVPlacement(rotateSPRing,G4ThreeVector(0,0,z3),
01262         logicTaperRing3,"TaperRing3",logicEMC,false,0);
01263   }
01264   /*
01265   logicSupportBar->SetVisAttributes(ringVisAtt);
01266   logicSupportBar1->SetVisAttributes(ringVisAtt);
01267   logicEndRing->SetVisAttributes(ringVisAtt);
01268   logicGear->SetVisAttributes(ringVisAtt);
01269   logicTaperRing1->SetVisAttributes(ringVisAtt);
01270   logicTaperRing2->SetVisAttributes(ringVisAtt);
01271   logicTaperRing3->SetVisAttributes(ringVisAtt);
01272   */
01273 }

void ExtBesEmcConstruction::DefineMaterials  )  [private]
 

void ExtBesEmcConstruction::DefineMaterials  )  [private]
 

00852 {
00853   G4String name, symbol;             //a=mass of a mole;
00854   G4double a, z, density;            //z=mean number of protons;  
00855   //  G4int iz, n;                       //iz=number of protons  in an isotope;
00856                                      // n=number of nucleons in an isotope;
00857 
00858   G4int ncomponents, natoms;
00859   G4double fractionmass;
00860   //G4double abundance, fractionmass;
00861   //  G4double temperature, pressure;
00862 
00863   //for debug
00864   //  G4Exception("BesEmcConstruction::DefineMaterials() starting...........");
00865   //
00866   // define Elements
00867   //
00868   G4Element* H=G4Element::GetElement("Hydrogen");
00869   if(!H)
00870     {
00871       a = 1.01*g/mole;
00872       H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
00873     }
00874   G4Element* C=G4Element::GetElement("Carbon");
00875   if(!C)
00876     {
00877       a = 12.01*g/mole;
00878       C = new G4Element(name="Carbon"  ,symbol="C" , z= 6., a);
00879     }
00880   G4Element* O=G4Element::GetElement("Oxygen");
00881   if(!O)
00882     {
00883       a = 16.00*g/mole;
00884       O = new G4Element(name="Oxygen"  ,symbol="O" , z= 8., a);  
00885     }
00886   
00887   density = 0.344*g/cm3;
00888   G4Material* Tyvek = new G4Material(name="Polyethylene", density, ncomponents=2);
00889   Tyvek->AddElement(C, natoms=1);
00890   Tyvek->AddElement(H, natoms=2);
00891 
00892   density = 1.39*g/cm3;
00893   G4Material* Mylar = new G4Material(name="PolyethyleneTerephthlate", density, ncomponents=3);
00894   Mylar->AddElement(C, natoms=5);
00895   Mylar->AddElement(H, natoms=4);
00896   Mylar->AddElement(O, natoms=2);
00897 
00898   density = 1.18*g/cm3;
00899   organicGlass = new G4Material(name="OrganicGlass", density, ncomponents=3);
00900   organicGlass->AddElement(C, natoms=5);
00901   organicGlass->AddElement(H, natoms=7);
00902   organicGlass->AddElement(O, natoms=2);
00903 
00904   G4Material *Fe = new G4Material(name="Iron", z=26., a=55.85*g/mole, density=7.87*g/cm3);
00905   G4Material *Cr = new G4Material(name="Chromium", z=24., a=52.00*g/mole, density=8.72*g/cm3);
00906   G4Material *Ni = new G4Material(name="Nickel", z=28., a=58.69*g/mole, density=8.72*g/cm3);
00907 
00908   stainlessSteel = new G4Material(name="0Cr18Ni9", density=7.85*g/cm3, ncomponents=3);
00909   stainlessSteel->AddMaterial(Fe, fractionmass=73.*perCent);
00910   stainlessSteel->AddMaterial(Cr, fractionmass=18.*perCent);
00911   stainlessSteel->AddMaterial(Ni, fractionmass=9.*perCent);
00912   
00913   G4Material *H2O = G4Material::GetMaterial("Water");
00914   G4Material *Cu = G4Material::GetMaterial("Copper");
00915   G4double dWater = 1.*g/cm3; //density
00916   G4double dCopper = 8.96*g/cm3;
00917   G4double aWater = ((*besEMCGeometry).waterPipeDr-(*besEMCGeometry).waterPipeThickness)
00918     *((*besEMCGeometry).waterPipeDr-(*besEMCGeometry).waterPipeThickness);    //area
00919   G4double aCopper = (*besEMCGeometry).waterPipeDr*(*besEMCGeometry).waterPipeDr-aWater;
00920   density = (dWater*aWater+dCopper*aCopper)/(aWater+aCopper);
00921 
00922   waterPipe = new G4Material(name="WaterPipe", density, ncomponents=2);
00923   fractionmass = dWater*aWater/(dWater*aWater+dCopper*aCopper);
00924   waterPipe->AddMaterial(H2O, fractionmass);
00925   fractionmass = dCopper*aCopper/(dWater*aWater+dCopper*aCopper);
00926   waterPipe->AddMaterial(Cu, fractionmass);
00927 
00928   cable  = new G4Material(name="Cable", density=4.*g/cm3, ncomponents=1);
00929   cable->AddMaterial(Cu,1);
00930   
00931   //for debug
00932   //G4Exception("BesEmcConstruction::DefineMaterials() running one.........");
00933   //
00934   // predigest the casing of crystals to a mixture
00935   //
00936   
00937   G4Material* Al=G4Material::GetMaterial("Aluminium");
00938   if(Al==NULL)
00939   {
00940       Al = new G4Material(name="Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3);
00941   }
00942   
00943   G4Material *Si=G4Material::GetMaterial("Silicon");
00944   if(Si==NULL)
00945   {
00946     Si = new G4Material(name="Silicon", z=14., a=28.0855*g/mole, density=2.33*g/cm3);
00947   }
00948   
00949   //for debug
00950   G4double totalThickness=(*besEMCGeometry).fTyvekThickness
00951     +(*besEMCGeometry).fAlThickness+(*besEMCGeometry).fMylarThickness;
00952   density = (Tyvek->GetDensity()*(*besEMCGeometry).fTyvekThickness+
00953              Al->GetDensity()*(*besEMCGeometry).fAlThickness+
00954              Mylar->GetDensity()*(*besEMCGeometry).fMylarThickness)
00955     /totalThickness;
00956   G4Material* Casing = new G4Material(name="Casing", density, ncomponents=3);
00957   Casing->AddMaterial(
00958                       Tyvek,
00959                       fractionmass=Tyvek->GetDensity()/density
00960                                    *(*besEMCGeometry).fTyvekThickness
00961                                    /totalThickness);
00962   Casing->AddMaterial(
00963                       Al,
00964                       fractionmass=Al->GetDensity()/density
00965                                    *(*besEMCGeometry).fAlThickness
00966                                    /totalThickness);
00967   Casing->AddMaterial(
00968                       Mylar,
00969                       fractionmass=Mylar->GetDensity()/density
00970                                    *(*besEMCGeometry).fMylarThickness
00971                                    /totalThickness);
00972   fCasingMaterial = Casing;
00973   rearCasingMaterial = Tyvek;
00974   //for debug
00975   //  G4Exception("BesEmcConstruction::DefineMaterials() running two........");
00976   fCrystalMaterial = G4Material::GetMaterial("Cesiumiodide");
00977 }

G4LogicalVolume* ExtBesSubdetector::FindLogicalVolume const G4String &  vn  )  [inline, inherited]
 

G4LogicalVolume * ExtBesSubdetector::FindLogicalVolume const G4String &  vn  )  [inline, inherited]
 

00022 {
00023         return const_cast<G4LogicalVolume*>( GDMLProcessor::GetInstance()->GetLogicalVolume(vn) );
00024 }

ExtBesEmcConstruction* ExtBesEmcConstruction::GetBesEmcConstruction  )  [inline, static]
 

00034 {return fBesEmcConstruction;};

ExtBesEmcConstruction* ExtBesEmcConstruction::GetBesEmcConstruction  )  [inline, static]
 

00034 {return fBesEmcConstruction;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetBSCCrystal  )  [inline]
 

00078 {return physiBSCCrystal;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetBSCCrystal  )  [inline]
 

00078 {return physiBSCCrystal;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetBSCPhi  )  [inline]
 

00076 {return physiBSCPhi;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetBSCPhi  )  [inline]
 

00076 {return physiBSCPhi;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetBSCTheta  )  [inline]
 

00077 {return physiBSCTheta;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetBSCTheta  )  [inline]
 

00077 {return physiBSCTheta;};

G4Material* ExtBesEmcConstruction::GetCasingMaterial  )  [inline]
 

00072 {return fCasingMaterial;};

G4Material* ExtBesEmcConstruction::GetCasingMaterial  )  [inline]
 

00072 {return fCasingMaterial;};

G4Material* ExtBesEmcConstruction::GetCrystalMaterial  )  [inline]
 

00071 {return fCrystalMaterial;};

G4Material* ExtBesEmcConstruction::GetCrystalMaterial  )  [inline]
 

00071 {return fCrystalMaterial;};

const G4VPVParameterisation* ExtBesEmcConstruction::GetCrystalParam  )  [inline]
 

00079 {return crystalParam;};

const G4VPVParameterisation* ExtBesEmcConstruction::GetCrystalParam  )  [inline]
 

00079 {return crystalParam;};

const G4VPhysicalVolume* ExtBesEmcConstruction::GetEMC  )  [inline]
 

00075 {return physiEMC; }

const G4VPhysicalVolume* ExtBesEmcConstruction::GetEMC  )  [inline]
 

00075 {return physiEMC; }

G4double ExtBesEmcConstruction::GetMagField  )  [inline]
 

00067 {return fmagField;};

G4double ExtBesEmcConstruction::GetMagField  )  [inline]
 

00067 {return fmagField;};

G4int ExtBesEmcConstruction::GetStartIDTheta  )  [inline]
 

00069 {return startID;};

G4int ExtBesEmcConstruction::GetStartIDTheta  )  [inline]
 

00069 {return startID;};

G4int ExtBesEmcConstruction::GetVerboseLevel  )  [inline]
 

00066 {return verboseLevel;};

G4int ExtBesEmcConstruction::GetVerboseLevel  )  [inline]
 

00066 {return verboseLevel;};

void ExtBesEmcConstruction::PrintEMCParameters  ) 
 

void ExtBesEmcConstruction::PrintEMCParameters  ) 
 

01303 {
01304   G4cout << "-------------------------------------------------------"<< G4endl
01305      << "---> There are "
01306      << phiNbCrystals << "(max=" << (*besEMCGeometry).BSCNbPhi
01307      << ") crystals along phi direction and "
01308      << thetaNbCrystals << "(max=" << (*besEMCGeometry).BSCNbTheta
01309      << ") crystals along theta direction."<< G4endl
01310      << "The crystals have sizes of "
01311      << (*besEMCGeometry).BSCCryLength/cm << "cm(L) and "
01312      << (*besEMCGeometry).BSCYFront/cm << "cm(Y) with "
01313      << fCrystalMaterial->GetName() <<"."<< G4endl
01314      << "The casing is layer of "
01315      << (*besEMCGeometry).fTyvekThickness/mm << "mm tyvek,"
01316      << (*besEMCGeometry).fAlThickness/mm << "mm aluminum and"
01317      << (*besEMCGeometry).fMylarThickness/mm << "mm mylar."<< G4endl
01318      << "-------------------------------------------------------"<< G4endl;
01319   G4cout << G4Material::GetMaterial("PolyethyleneTerephthlate") << G4endl
01320      << G4Material::GetMaterial("Casing") << G4endl
01321      << G4Material::GetMaterial("Polyethylene") << G4endl
01322      << "-------------------------------------------------------"<< G4endl;
01323 }

void ExtBesEmcConstruction::SetBSCCrystalLength G4double   ) 
 

void ExtBesEmcConstruction::SetBSCCrystalLength G4double   ) 
 

01390 {
01391   (*besEMCGeometry).BSCCryLength = val;
01392 }

void ExtBesEmcConstruction::SetBSCNbPhi G4int   ) 
 

void ExtBesEmcConstruction::SetBSCNbPhi G4int   ) 
 

01370 {
01371   (*besEMCGeometry).BSCNbPhi = val;
01372 }

void ExtBesEmcConstruction::SetBSCNbTheta G4int   ) 
 

void ExtBesEmcConstruction::SetBSCNbTheta G4int   ) 
 

01377 {
01378   (*besEMCGeometry).BSCNbTheta = val;
01379 }

void ExtBesEmcConstruction::SetBSCPosition0 G4double   ) 
 

void ExtBesEmcConstruction::SetBSCPosition0 G4double   ) 
 

01412 {
01413   (*besEMCGeometry).BSCPosition0 = val;
01414 }

void ExtBesEmcConstruction::SetBSCPosition1 G4double   ) 
 

void ExtBesEmcConstruction::SetBSCPosition1 G4double   ) 
 

01419 {
01420   (*besEMCGeometry).BSCPosition1 = val;
01421 }

void ExtBesEmcConstruction::SetBSCRmin G4double   ) 
 

void ExtBesEmcConstruction::SetBSCRmin G4double   ) 
 

01363 {
01364   (*besEMCGeometry).BSCRmin = val;
01365 }

void ExtBesEmcConstruction::SetBSCYFront G4double   ) 
 

void ExtBesEmcConstruction::SetBSCYFront G4double   ) 
 

01405 {
01406   (*besEMCGeometry).BSCYFront = val;
01407 }

void ExtBesEmcConstruction::SetBSCYFront0 G4double   ) 
 

void ExtBesEmcConstruction::SetBSCYFront0 G4double   ) 
 

01397 {
01398   (*besEMCGeometry).BSCYFront0 = val;
01399 }

void ExtBesEmcConstruction::SetCasingMaterial G4String   ) 
 

void ExtBesEmcConstruction::SetCasingMaterial G4String   ) 
 

01340 {
01341   // search the material by its name 
01342   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
01343   if (pttoMaterial)
01344      {fCasingMaterial = pttoMaterial;
01345      logicBSCTheta->SetMaterial(pttoMaterial);
01346       PrintEMCParameters();
01347      }
01348 }

void ExtBesEmcConstruction::SetCasingThickness G4ThreeVector   ) 
 

void ExtBesEmcConstruction::SetCasingThickness G4ThreeVector   ) 
 

01353 {
01354   // change Gap thickness and recompute the calorimeter parameters
01355   (*besEMCGeometry).fTyvekThickness = val('X');
01356   (*besEMCGeometry).fAlThickness    = val('Y');
01357   (*besEMCGeometry).fMylarThickness = val('Z');
01358 }

void ExtBesEmcConstruction::SetCrystalMaterial G4String   ) 
 

void ExtBesEmcConstruction::SetCrystalMaterial G4String   ) 
 

01328 {
01329   // search the material by its name   
01330   G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
01331   if (pttoMaterial)
01332      {fCrystalMaterial = pttoMaterial;
01333       logicBSCCrystal->SetMaterial(pttoMaterial);
01334       PrintEMCParameters();
01335      }
01336 }

void ExtBesEmcConstruction::SetMagField G4double   ) 
 

void ExtBesEmcConstruction::SetMagField G4double   ) 
 

01426 {
01427   //apply a global uniform magnetic field along Z axis
01428   G4FieldManager* fieldMgr
01429    = G4TransportationManager::GetTransportationManager()->GetFieldManager();
01430 
01431   if(magField) delete magField;     //delete the existing magn field
01432 
01433   if(fieldValue!=0.)            // create a new one if non nul
01434   { magField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldValue));
01435     fieldMgr->SetDetectorField(magField);
01436     fieldMgr->CreateChordFinder(magField);
01437     fmagField=fieldValue;
01438   } else {
01439     magField = 0;
01440     fieldMgr->SetDetectorField(magField);
01441     fmagField=0.;
01442   }
01443 }

void ExtBesEmcConstruction::SetStartIDTheta G4int   ) 
 

void ExtBesEmcConstruction::SetStartIDTheta G4int   ) 
 

01382 {
01383   startID = val;
01384 }

void ExtBesEmcConstruction::SetVerboseLevel G4int  val  )  [inline]
 

00043 { verboseLevel=val;}

void ExtBesEmcConstruction::SetVerboseLevel G4int  val  )  [inline]
 

00043 { verboseLevel=val;}

void ExtBesEmcConstruction::UpdateGeometry  ) 
 

void ExtBesEmcConstruction::UpdateGeometry  ) 
 

01448 {
01449   ;//G4RunManager::GetRunManager()->DefineWorldVolume(BesDetectorConstruction::Construct());
01450 }


Member Data Documentation

ExtBesEmcGeometry* ExtBesEmcConstruction::besEMCGeometry [private]
 

ExtBesEmcGeometry* ExtBesEmcConstruction::besEMCGeometry [private]
 

BesEmcSD* ExtBesEmcConstruction::besEMCSD [private]
 

BesEmcSD* ExtBesEmcConstruction::besEMCSD [private]
 

G4Material* ExtBesEmcConstruction::cable [private]
 

G4Material* ExtBesEmcConstruction::cable [private]
 

G4VPVParameterisation* ExtBesEmcConstruction::crystalParam [private]
 

G4VPVParameterisation* ExtBesEmcConstruction::crystalParam [private]
 

G4Material* ExtBesEmcConstruction::defaultMaterial [private]
 

G4Material* ExtBesEmcConstruction::defaultMaterial [private]
 

BesEmcDetectorMessenger* ExtBesEmcConstruction::detectorMessenger [private]
 

BesEmcDetectorMessenger* ExtBesEmcConstruction::detectorMessenger [private]
 

ExtBesEmcEndGeometry* ExtBesEmcConstruction::emcEnd [private]
 

ExtBesEmcEndGeometry* ExtBesEmcConstruction::emcEnd [private]
 

ExtBesEmcConstruction* ExtBesEmcConstruction::fBesEmcConstruction [static, private]
 

ExtBesEmcConstruction * ExtBesEmcConstruction::fBesEmcConstruction = 0 [static, private]
 

G4Material* ExtBesEmcConstruction::fCasingMaterial [private]
 

G4Material* ExtBesEmcConstruction::fCasingMaterial [private]
 

G4Material* ExtBesEmcConstruction::fCrystalMaterial [private]
 

G4Material* ExtBesEmcConstruction::fCrystalMaterial [private]
 

G4double ExtBesEmcConstruction::fmagField [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicAirInPABox [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicAirInPABox [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicAlPlate [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicAlPlate [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicBSCCrystal [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicBSCCrystal [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicBSCPhi [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicBSCPhi [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicBSCTheta [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicBSCTheta [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicCable [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicCable [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEMC [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEMC [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEnd [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEnd [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndCasing [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndCasing [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndCrystal [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndCrystal [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndPhi [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndPhi [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndRing [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicEndRing [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicGear [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicGear [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicHangingPlate [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicHangingPlate [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicOCGirder [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicOCGirder [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicOrgGlass [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicOrgGlass [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicPD [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicPD [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicPreAmpBox [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicPreAmpBox [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicRear [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicRear [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicRearCasing [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicRearCasing [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicSupportBar [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicSupportBar [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicSupportBar1 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicSupportBar1 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicTaperRing1 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicTaperRing1 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicTaperRing2 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicTaperRing2 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicTaperRing3 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicTaperRing3 [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicWaterPipe [private]
 

G4LogicalVolume* ExtBesEmcConstruction::logicWaterPipe [private]
 

G4UniformMagField* ExtBesEmcConstruction::magField [private]
 

G4UniformMagField* ExtBesEmcConstruction::magField [private]
 

G4Material* ExtBesEmcConstruction::organicGlass [private]
 

G4Material* ExtBesEmcConstruction::organicGlass [private]
 

G4int ExtBesEmcConstruction::phiNbCrystals [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiAirInPABox [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiAirInPABox [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiAlPlate [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiAlPlate [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiBSCCrystal [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiBSCCrystal [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiBSCPhi [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiBSCPhi [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiBSCTheta [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiBSCTheta [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiCable [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiCable [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEMC [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEMC [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEnd [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEnd [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndCasing [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndCasing [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndCrystal [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndCrystal [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndPhi [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndPhi [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndRing [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiEndRing [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiGear [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiGear [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiHangingPlate [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiHangingPlate [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiOCGirder [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiOCGirder [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiOrgGlass [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiOrgGlass [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiPD [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiPD [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiPreAmpBox [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiPreAmpBox [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiRear [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiRear [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiRearCasing [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiRearCasing [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiSupportBar [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiSupportBar [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiSupportBar1 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiSupportBar1 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiTaperRing1 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiTaperRing1 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiTaperRing2 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiTaperRing2 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiTaperRing3 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiTaperRing3 [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiWaterPipe [private]
 

G4VPhysicalVolume* ExtBesEmcConstruction::physiWaterPipe [private]
 

G4Material* ExtBesEmcConstruction::rearCasingMaterial [private]
 

G4Material* ExtBesEmcConstruction::rearCasingMaterial [private]
 

G4Box* ExtBesEmcConstruction::solidAirHole [private]
 

G4Box* ExtBesEmcConstruction::solidAirHole [private]
 

G4Box* ExtBesEmcConstruction::solidAirInPABox [private]
 

G4Box* ExtBesEmcConstruction::solidAirInPABox [private]
 

G4Box* ExtBesEmcConstruction::solidAlBox [private]
 

G4Box* ExtBesEmcConstruction::solidAlBox [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidAlPlate [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidAlPlate [private]
 

G4Tubs* ExtBesEmcConstruction::solidBSC [private]
 

G4Tubs* ExtBesEmcConstruction::solidBSC [private]
 

G4Trap* ExtBesEmcConstruction::solidBSCCrystal [private]
 

G4Trap* ExtBesEmcConstruction::solidBSCCrystal [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidBSCPhi [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidBSCPhi [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidBSCPhi1 [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidBSCPhi1 [private]
 

G4Tubs* ExtBesEmcConstruction::solidBSCPhiTub [private]
 

G4Tubs* ExtBesEmcConstruction::solidBSCPhiTub [private]
 

G4Trap* ExtBesEmcConstruction::solidBSCTheta [private]
 

G4Trap* ExtBesEmcConstruction::solidBSCTheta [private]
 

G4Tubs* ExtBesEmcConstruction::solidCable [private]
 

G4Tubs* ExtBesEmcConstruction::solidCable [private]
 

G4Box* ExtBesEmcConstruction::solidCasingBox [private]
 

G4Box* ExtBesEmcConstruction::solidCasingBox [private]
 

G4Cons* ExtBesEmcConstruction::solidConsPhi [private]
 

G4Cons* ExtBesEmcConstruction::solidConsPhi [private]
 

G4UnionSolid* ExtBesEmcConstruction::solidEMC [private]
 

G4UnionSolid* ExtBesEmcConstruction::solidEMC [private]
 

G4Cons* ExtBesEmcConstruction::solidEnd [private]
 

G4Cons* ExtBesEmcConstruction::solidEnd [private]
 

G4IrregBox* ExtBesEmcConstruction::solidEndCasing [private]
 

G4IrregBox* ExtBesEmcConstruction::solidEndCasing [private]
 

G4IrregBox* ExtBesEmcConstruction::solidEndCrystal [private]
 

G4IrregBox* ExtBesEmcConstruction::solidEndCrystal [private]
 

G4Cons* ExtBesEmcConstruction::solidEndPhi [private]
 

G4Cons* ExtBesEmcConstruction::solidEndPhi [private]
 

G4Tubs* ExtBesEmcConstruction::solidEndRing [private]
 

G4Tubs* ExtBesEmcConstruction::solidEndRing [private]
 

G4Tubs* ExtBesEmcConstruction::solidESC [private]
 

G4Tubs* ExtBesEmcConstruction::solidESC [private]
 

G4Tubs* ExtBesEmcConstruction::solidGear [private]
 

G4Tubs* ExtBesEmcConstruction::solidGear [private]
 

G4Box* ExtBesEmcConstruction::solidHangingPlate [private]
 

G4Box* ExtBesEmcConstruction::solidHangingPlate [private]
 

G4Cons* ExtBesEmcConstruction::solidOCGirder [private]
 

G4Cons* ExtBesEmcConstruction::solidOCGirder [private]
 

G4Box* ExtBesEmcConstruction::solidOrgGlass [private]
 

G4Box* ExtBesEmcConstruction::solidOrgGlass [private]
 

G4Box* ExtBesEmcConstruction::solidPD [private]
 

G4Box* ExtBesEmcConstruction::solidPD [private]
 

G4Box* ExtBesEmcConstruction::solidPreAmpBox [private]
 

G4Box* ExtBesEmcConstruction::solidPreAmpBox [private]
 

G4Box* ExtBesEmcConstruction::solidRear [private]
 

G4Box* ExtBesEmcConstruction::solidRear [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidRearCasing [private]
 

G4SubtractionSolid* ExtBesEmcConstruction::solidRearCasing [private]
 

G4Tubs* ExtBesEmcConstruction::solidSupportBar [private]
 

G4Tubs* ExtBesEmcConstruction::solidSupportBar [private]
 

G4Tubs* ExtBesEmcConstruction::solidSupportBar1 [private]
 

G4Tubs* ExtBesEmcConstruction::solidSupportBar1 [private]
 

G4Tubs* ExtBesEmcConstruction::solidTaperRing1 [private]
 

G4Tubs* ExtBesEmcConstruction::solidTaperRing1 [private]
 

G4Cons* ExtBesEmcConstruction::solidTaperRing2 [private]
 

G4Cons* ExtBesEmcConstruction::solidTaperRing2 [private]
 

G4Cons* ExtBesEmcConstruction::solidTaperRing3 [private]
 

G4Cons* ExtBesEmcConstruction::solidTaperRing3 [private]
 

G4Tubs* ExtBesEmcConstruction::solidWaterPipe [private]
 

G4Tubs* ExtBesEmcConstruction::solidWaterPipe [private]
 

G4Material* ExtBesEmcConstruction::stainlessSteel [private]
 

G4Material* ExtBesEmcConstruction::stainlessSteel [private]
 

G4int ExtBesEmcConstruction::startID [private]
 

G4int ExtBesEmcConstruction::thetaNbCrystals [private]
 

G4int ExtBesEmcConstruction::verboseLevel [private]
 

G4Material* ExtBesEmcConstruction::waterPipe [private]
 

G4Material* ExtBesEmcConstruction::waterPipe [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:14:21 2011 for BOSS6.5.5 by  doxygen 1.3.9.1