Skip to content
Snippets Groups Projects
Commit b9d4eefa authored by audrey.chatillon's avatar audrey.chatillon
Browse files

[Epic] add gas in the central part of the fission chamber

parent 3e9695b1
No related branches found
No related tags found
1 merge request!27Draft: [Epic] Preparation of the environement for the new GaseousDetectorScorers...
Pipeline #378453 passed
......@@ -84,7 +84,9 @@ Epic::Epic(){
m_VisFCWall = new G4VisAttributes(G4Colour(0.1,0.5,0.7,1));
m_VisAl = new G4VisAttributes(G4Colour(0.839,0.803,0.803,1));
m_VisTi = new G4VisAttributes(G4Colour(0.776,0.662,0.662,0.5));
m_VisGas = new G4VisAttributes(G4Colour(0.576,0.662,0.662,0.3));
m_VisGasAK = new G4VisAttributes(G4Colour(0.576,0.662,0.662,0.3));
m_VisGasKK = new G4VisAttributes(G4Colour(0.576,0.662,0.662,0.5));
m_VisGas = new G4VisAttributes(G4Colour(0.576,0.662,0.662,0.1));
m_VisCu = new G4VisAttributes(G4Colour(0.70, 0.40, 0. ,1));
m_VisRogers4003C = new G4VisAttributes(G4Colour(0.60, 0.60, 0.2 ,1));
......@@ -189,9 +191,10 @@ G4AssemblyVolume* Epic::BuildEpic(){
G4Material* Cu_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Cu");
G4Material* Ti_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Ti");
G4Material* Rogers_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Rogers4003C");
G4Material* gas_material = MaterialManager::getInstance()->GetGasFromLibrary(m_GasMaterial, m_Pressure, 300*kelvin);
// --- PCB material (6 layers of Cu)
// --- PCB (6 layers of Cu)
double posY_PCB = -85.0*mm; // @the 6-Cu layers
double PCB_width = 180.0*mm;
double PCB_length = 330.0*mm;
......@@ -212,7 +215,7 @@ G4AssemblyVolume* Epic::BuildEpic(){
Tv.setY(posY_PCB);
m_EpicVolume->AddPlacedVolume(PCB_Cu_vol, Tv, Rv);
// --- Flange in Aluminium
// --- FLANGE IN ALUMINIUM
double flange_full_width = PCB_width;
double flange_full_length = PCB_length;
double flange_full_height = 5.*mm; double posY_flange = posY_PCB - 0.5*PCB_Cu_height - 0.5*flange_full_height ;
......@@ -237,7 +240,7 @@ G4AssemblyVolume* Epic::BuildEpic(){
m_EpicVolume->AddPlacedVolume(flange_vol, Tv, Rv);
// --- Frame in Aluminium
// --- FRAME IN ALUMINIUM
double frame_foot_full_width = flange_full_width;
double frame_foot_full_length = flange_full_length;
double frame_foot_full_height = flange_full_height; double posY_frame_foot = posY_PCB + 0.5*PCB_Cu_height + PCB_Rogers_height + 0.5*frame_foot_full_height ;
......@@ -288,23 +291,37 @@ G4AssemblyVolume* Epic::BuildEpic(){
m_EpicVolume->AddPlacedVolume(frame_final_vol, Tv, Rv);
//--- Cathodes (TO DO : rajouter les depots)
//--- TITANE WINDOWS (TO DO)
//--- CENTRAL PART OF THE FISSION CHAMBER
// - Cathodes (TO DO : rajouter les depots)
// - Anodes
// - gas volumes : active gas_AK and gas_KK
double posZ_first_cathode = -1.*(double)m_nA*m_Distance_AK*mm - (double)std::trunc(0.5*m_nA)*m_InterDistance_KK*mm;
// Build First Cathode
// Build the first cathode and the first anode
BuildCathode(posZ_first_cathode);
// Build the central pairs of cathodes back to back
BuildAnode(posZ_first_cathode + m_Distance_AK*mm);
// Build the central pairs of cathodes back to back, the anodes and the gas_KK
G4Tubs* gas_KK_solid = new G4Tubs("gas_KK",0,37.*mm,0.5*m_InterDistance_KK,0,360*deg);
G4LogicalVolume* gas_KK_vol = new G4LogicalVolume(gas_KK_solid, gas_material,"logic_gas_KK",0,0,0);
gas_KK_vol->SetVisAttributes(m_VisGasKK);
for(int i=1; i<m_nA; i++){
double posZ_current_cathode = posZ_first_cathode + (double)i*2.*m_Distance_AK*mm + (double)(i-0.5)*m_InterDistance_KK*mm ;
BuildCathode(posZ_current_cathode - 0.5*m_InterDistance_KK*mm);
Tv.setY(0);
Tv.setZ(posZ_current_cathode);
m_EpicVolume->AddPlacedVolume(gas_KK_vol, Tv, Rv);
BuildCathode(posZ_current_cathode + 0.5*m_InterDistance_KK*mm);
BuildAnode(posZ_current_cathode + 0.5*m_InterDistance_KK*mm + m_Distance_AK*mm);
}
// Build Last Cathode
// Build the last cathode
BuildCathode(posZ_first_cathode + (double)m_nA*2.*m_Distance_AK*mm + (double)(m_nA-1)*m_InterDistance_KK*mm);
// --- Anodes
// --- UNACTIVE GAS VOLUME
/*
......@@ -320,7 +337,6 @@ G4AssemblyVolume* Epic::BuildEpic(){
double gas_length = 29.8*cm;
G4Box* gas_solid = new G4Box("Gas_solid", 0.5*gas_width, 0.5*gas_height, 0.5*gas_length);
G4Material* gas_material = MaterialManager::getInstance()->GetGasFromLibrary(m_GasMaterial, m_Pressure, 300*kelvin);
G4LogicalVolume* gas_volume = new G4LogicalVolume(gas_solid, gas_material, "gas_logic", 0, 0, 0);
gas_volume->SetSensitiveDetector(m_EpicScorer);
//m_VisGas->SetForceWireframe(true);
......@@ -412,20 +428,16 @@ G4AssemblyVolume* Epic::BuildEpic(){
*/
return m_EpicVolume;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Epic::BuildCathode(double Zpos){
// Al plate: 12 um
G4Tubs* Al_plate_solid = new G4Tubs("Al_plate",0,40*mm,12*micrometer,0,360*deg);
// Al plate:
// thickness = 12 um
// external radius = 37 mm
G4Tubs* Al_plate_solid = new G4Tubs("Al_plate",0,37.*mm,6.*micrometer,0,360*deg);
G4Material* Al_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
G4LogicalVolume* Al_vol = new G4LogicalVolume(Al_plate_solid, Al_material,"logic_Al",0,0,0);
G4LogicalVolume* Al_vol = new G4LogicalVolume(Al_plate_solid, Al_material,"logic_AlK",0,0,0);
Al_vol->SetVisAttributes(m_VisAl);
G4RotationMatrix *Rv=new G4RotationMatrix(0,0,0);
......@@ -439,28 +451,49 @@ void Epic::BuildCathode(double Zpos){
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Epic::BuildAnode(double Zpos){
// Cu plate: 17 um
G4Tubs* Cu_plate_solid = new G4Tubs("Cu_plate",0,40*mm,0.5*Epic_NS::Cu_Thickness,0,360*deg);
G4RotationMatrix *Rv=new G4RotationMatrix(0,0,0);
G4ThreeVector Tv;
Tv.setX(0); Tv.setY(0); Tv.setZ(0);
// Get Material
G4Material* Cu_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Cu");
G4LogicalVolume* Cu_vol = new G4LogicalVolume(Cu_plate_solid, Cu_material,"logic_Cu",0,0,0);
G4Material* Kapton_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Kapton");
G4Material* gas_material = MaterialManager::getInstance()->GetGasFromLibrary(m_GasMaterial, m_Pressure, 300*kelvin);
// Cu plate: 17 um
G4Tubs* Cu_plate_solid = new G4Tubs("Cu_plate",0,37.*mm,0.5*Epic_NS::Cu_Thickness,0,360*deg);
G4LogicalVolume* Cu_vol = new G4LogicalVolume(Cu_plate_solid, Cu_material,"logic_CuA",0,0,0);
Cu_vol->SetVisAttributes(m_VisCu);
// Kapton: 50 um
G4Tubs* Kapton_solid = new G4Tubs("Kapton",0,40*mm,0.5*Epic_NS::Kapton_Thickness,0,360*deg);
G4Material* Kapton_material = MaterialManager::getInstance()->GetMaterialFromLibrary("Kapton");
G4LogicalVolume* Kapton_vol = new G4LogicalVolume(Kapton_solid, Kapton_material,"logic_Kapton",0,0,0);
G4Tubs* Kapton_solid = new G4Tubs("Kapton",0,37.*mm,0.5*Epic_NS::Kapton_Thickness,0,360*deg);
G4LogicalVolume* Kapton_vol = new G4LogicalVolume(Kapton_solid, Kapton_material,"logic_KaptonA",0,0,0);
Kapton_vol->SetVisAttributes(m_VisFCWall);
G4RotationMatrix *Rv=new G4RotationMatrix(0,0,0);
G4ThreeVector Tv;
Tv.setX(0); Tv.setY(0); Tv.setZ(0);
// Sensitive gas volumes before and after anode (TO DO, several slices instead of a unique gas volume)
G4Tubs* gas_AK_solid = new G4Tubs("gas_AK",0,37.*mm,0.5*m_Distance_AK,0,360*deg);
G4LogicalVolume* gas_AK_vol = new G4LogicalVolume(gas_AK_solid, gas_material,"logic_gas_AK",0,0,0);
gas_AK_vol->SetSensitiveDetector(m_EpicScorer);
gas_AK_vol->SetVisAttributes(m_VisGasAK);
Tv.setZ(Zpos);
m_EpicVolume->AddPlacedVolume(Kapton_vol, Tv, Rv);
// Build
Tv.setZ(Zpos-0.5*m_Distance_AK*mm);
m_EpicVolume->AddPlacedVolume(gas_AK_vol, Tv, Rv);
Tv.setZ(Zpos-0.5*Epic_NS::Kapton_Thickness-0.5*Epic_NS::Cu_Thickness);
m_EpicVolume->AddPlacedVolume(Cu_vol, Tv, Rv);
Tv.setZ(Zpos);
m_EpicVolume->AddPlacedVolume(Kapton_vol, Tv, Rv);
Tv.setZ(Zpos+0.5*Epic_NS::Kapton_Thickness+0.5*Epic_NS::Cu_Thickness);
m_EpicVolume->AddPlacedVolume(Cu_vol, Tv, Rv);
Tv.setZ(Zpos+0.5*m_Distance_AK*mm);
m_EpicVolume->AddPlacedVolume(gas_AK_vol, Tv, Rv);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
......
......@@ -111,6 +111,8 @@ class Epic : public NPS::VDetector{
G4VisAttributes* m_VisFCWall;
G4VisAttributes* m_VisAl;
G4VisAttributes* m_VisCu;
G4VisAttributes* m_VisGasAK;
G4VisAttributes* m_VisGasKK;
G4VisAttributes* m_VisGas;
G4VisAttributes* m_VisTi;
G4VisAttributes* m_VisRogers4003C;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment