// // // RPC-ModuleParameterisation.cc // // // class RPC_ModuleParameterisation - implementation // // // ****************************************** // * Implements RPC Module Parameterisation * // ****************************************** // // ---------------------------------------------------------------------- // Author: Miguel Couceiro // Version: 3.0 // Date: May 2009 // ---------------------------------------------------------------------- // Revisions: // // Authors: Miguel Couceiro and Ana LuĂ­sa Lopes // Version: 4.0 // Date: June 2018 // ---------------------------------------------------------------------- /* ********************** */ /* **** Header Files **** */ /* ********************** */ #include #include #include #include #ifdef G4VIS_USE #include #endif // G4VIS_USE #include "../include/RPC-ModuleParameterisation.hh" #include "../include/RPC-ScannerParameters.hh" #include "../include/RPC-HeadParameters.hh" #include "../include/RPC-DetectorParameters.hh" #include "../include/RPC-ModuleParameters.hh" #include "../include/RPC-Parameters.hh" /* ************************************ */ /* **** Private static member data **** */ /* ************************************ */ // RPC_ModuleParameterisation* RPC_ModuleParameterisation::m_pModuleParameterisation = 0; /* ********************************* */ /* **** Constructors/Destructor **** */ /* ********************************* */ // Constructor RPC_ModuleParameterisation::RPC_ModuleParameterisation() : RPC_Parameterisation() { // Get module parameters m_nNumber = (RPC_Parameters::GetParameters())->GetModuleParameters()->GetNumberOfLayers(); CreateArrayParameters(); SetAllParameters(); } // Destructor RPC_ModuleParameterisation::~RPC_ModuleParameterisation() { DeleteArrayParameters(); } /* ************************************ */ /* **** Protected member functions **** */ /* ************************************ */ // SetAllParameters function - set all the parameters needed for parameterization void RPC_ModuleParameterisation::SetAllParameters (void) { RPC_ModuleParameters* pModuleParameters = (RPC_Parameters::GetParameters())->GetParameters()->GetModuleParameters(); RPC_LayerParameters* pLayerParameters; for (int i = 0 ; i < m_nNumber ; i++) { pLayerParameters = pModuleParameters->GetLayer(i); m_fHalfX[i] = pLayerParameters->GetThickness()/2.0; m_fHalfY[i] = pLayerParameters->GetWidth()/2.0; m_fHalfZ[i] = pLayerParameters->GetLength()/2.0; m_fXPos[i] = (i == 0) ? (-pModuleParameters->GetContainerThickness()/2.0 + m_fHalfX[i]) : (m_fXPos[i-1] + m_fHalfX[i-1] + pLayerParameters->GetThickness()/2.0); m_fYPos[i] = 0.0*mm; m_fZPos[i] = 0.0*mm; m_vOrigin[i] = G4ThreeVector(m_fXPos[i], m_fYPos[i], m_fZPos[i]); m_pRotation[i] = new G4RotationMatrix(); m_sMaterial[i] = pLayerParameters->GetMaterial(); m_sName_sld[i] = "Layer_" + pLayerParameters->GetName() + "_sld"; m_sName_log[i] = "Layer_" + pLayerParameters->GetName() + "_log"; m_sName_phys[i] = "Layer_" + pLayerParameters->GetName() + "_phys"; } #ifdef G4VIS_USE for (G4int i = 0 ; i < i ; i++) { if (m_sMaterial[i] == "Copper") m_Color[i] = G4Color(1.0, 1.0, 0.3); else if (m_sMaterial[i] == "FR4") m_Color[i] = G4Color(1.0, 1.0, 0.0); else if (m_sMaterial[i] == "Kapton") m_Color[i] = G4Color(0.5, 0.5, 0.5); else if (m_sMaterial[i] == "SodaLimeGlass") m_Color[i] = G4Color(0.0, 1.0, 0.0); else if (m_sMaterial[i] == "RPCGasMixture") m_Color[i] = G4Color(0.0, 0.0, 1.0); else m_Color[i] = G4Color(1.0, 1.0, 1.0); m_pVisAtt[i]->SetColour(m_Color[i]); } #endif // G4VIS_USE } /* ******************************************** */ /* **** General public interface functions **** */ /* ******************************************** */ // RPC_ModuleParameterisation* RPC_ModuleParameterisation::GetParameterisation (void) // { // if (m_pModuleParameterisation == 0) // m_pModuleParameterisation = new RPC_ModuleParameterisation(); // // return m_pModuleParameterisation; // }