/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/src/BDSDump.cc

00001 //  
00002 //   BDSIM, (C) 2001-2007
00003 //    
00004 //   version 0.3 
00005 //   last modified : 08 May 2007 by agapov@pp.rhul.ac.uk
00006 //  
00007 
00008 
00009 //
00010 //    beam dumper/reader for online exchange with external codes
00011 //
00012 
00013 #include "BDSExecOptions.hh"
00014 #include "BDSGlobalConstants.hh" 
00015 #include "BDSDump.hh"
00016 #include "G4Box.hh"
00017 #include "G4Tubs.hh"
00018 #include "G4VisAttributes.hh"
00019 #include "G4LogicalVolume.hh"
00020 #include "G4VPhysicalVolume.hh"
00021 #include "G4UserLimits.hh"
00022 #include "BDSDumpSD.hh"
00023 #include "BDSMaterials.hh"
00024 #include "G4SDManager.hh"
00025 
00026 BDSDumpSD* BDSDumpSensDet;
00027 
00028 int BDSDump::nDumps=0;
00029 
00030 BDSDump::BDSDump (G4String name, G4double length):
00031   BDSAcceleratorComponent(name, length, 0, "dump")
00032 {
00033   //SetName("Dump_"+BDSGlobalConstants::Instance()->StringFromInt(nDumps)+"_"+itsName);
00034   ++nDumps;
00035   //BDSRoot->SetDumpNumber(nDumps);
00036 }
00037 
00038 void BDSDump::BuildContainerLogicalVolume()
00039 {
00040   G4double radius = BDSGlobalConstants::Instance()->GetSamplerDiameter() * 0.5;
00041   
00042   containerSolid = new G4Box(name + "_container_solid",
00043                              radius,
00044                              radius,
00045                              chordLength*0.5);
00046   
00047   containerLogicalVolume = new G4LogicalVolume(containerSolid,
00048                                                emptyMaterial,
00049                                                name + "_container_lv");
00050 
00051 #ifndef NOUSERLIMITS
00052   G4UserLimits* itsOuterUserLimits = new G4UserLimits();
00053   itsOuterUserLimits->SetMaxAllowedStep(chordLength);
00054   itsOuterUserLimits->SetUserMinEkine(BDSGlobalConstants::Instance()->GetThresholdCutCharged());
00055   itsOuterUserLimits->SetUserMaxTime(BDSGlobalConstants::Instance()->GetMaxTime());
00056   containerLogicalVolume->SetUserLimits(itsOuterUserLimits);
00057 #endif
00058   // Sensitive Detector:
00059   if(nDumps==0)
00060     {
00061       G4SDManager* SDMan = G4SDManager::GetSDMpointer();
00062       BDSDumpSensDet=new BDSDumpSD(name,"plane");
00063       SDMan->AddNewDetector(BDSDumpSensDet);
00064     }
00065   containerLogicalVolume->SetSensitiveDetector(BDSDumpSensDet);
00066 }
00067 
00068 BDSDump::~BDSDump()
00069 {
00070   nDumps--;
00071 }

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7