Skip to content
Snippets Groups Projects
Commit d75c95c9 authored by adrien-matta's avatar adrien-matta
Browse files

* fixing warning in annular S1

parent 03d89a53
No related branches found
No related tags found
No related merge requests found
...@@ -61,22 +61,22 @@ class TS1Data : public TObject { ...@@ -61,22 +61,22 @@ class TS1Data : public TObject {
///////////////////// GETTERS //////////////////////// ///////////////////// GETTERS ////////////////////////
// (Th,E) // (Th,E)
const int GetS1ThetaEMult() const {return fS1_Theta_E_DetNbr.size();} const unsigned int GetS1ThetaEMult() const {return fS1_Theta_E_DetNbr.size();}
const int GetS1ThetaEDetectorNbr(const int& i) const {return fS1_Theta_E_DetNbr.at(i);} const int GetS1ThetaEDetectorNbr(const int& i) const {return fS1_Theta_E_DetNbr.at(i);}
const int GetS1ThetaEStripNbr(const int& i) const {return fS1_Theta_E_StripNbr.at(i);} const int GetS1ThetaEStripNbr(const int& i) const {return fS1_Theta_E_StripNbr.at(i);}
const double GetS1ThetaEEnergy(const int& i) const {return fS1_Theta_E_Energy.at(i);} const double GetS1ThetaEEnergy(const int& i) const {return fS1_Theta_E_Energy.at(i);}
// (Th,T) // (Th,T)
const int GetS1ThetaTMult() const {return fS1_Theta_T_DetNbr.size();} const unsigned int GetS1ThetaTMult() const {return fS1_Theta_T_DetNbr.size();}
const int GetS1ThetaTDetectorNbr(const int& i) const {return fS1_Theta_T_DetNbr.at(i);} const int GetS1ThetaTDetectorNbr(const int& i) const {return fS1_Theta_T_DetNbr.at(i);}
const int GetS1ThetaTStripNbr(const int& i) const {return fS1_Theta_T_StripNbr.at(i);} const int GetS1ThetaTStripNbr(const int& i) const {return fS1_Theta_T_StripNbr.at(i);}
const double GetS1ThetaTTime(const int& i) const {return fS1_Theta_T_Time.at(i);} const double GetS1ThetaTTime(const int& i) const {return fS1_Theta_T_Time.at(i);}
// (Ph,E) // (Ph,E)
const int GetS1PhiEMult() const {return fS1_Phi_E_DetNbr.size();} const unsigned int GetS1PhiEMult() const {return fS1_Phi_E_DetNbr.size();}
const int GetS1PhiEDetectorNbr(const int& i) const {return fS1_Phi_E_DetNbr.at(i);} const int GetS1PhiEDetectorNbr(const int& i) const {return fS1_Phi_E_DetNbr.at(i);}
const int GetS1PhiEStripNbr(const int& i) const {return fS1_Phi_E_StripNbr.at(i);} const int GetS1PhiEStripNbr(const int& i) const {return fS1_Phi_E_StripNbr.at(i);}
const double GetS1PhiEEnergy(const int& i) const {return fS1_Phi_E_Energy.at(i);} const double GetS1PhiEEnergy(const int& i) const {return fS1_Phi_E_Energy.at(i);}
// (Ph,T) // (Ph,T)
const int GetS1PhiTMult() const {return fS1_Phi_T_DetNbr.size();} const unsigned int GetS1PhiTMult() const {return fS1_Phi_T_DetNbr.size();}
const int GetS1PhiTDetectorNbr(const int& i) const {return fS1_Phi_T_DetNbr.at(i);} const int GetS1PhiTDetectorNbr(const int& i) const {return fS1_Phi_T_DetNbr.at(i);}
const int GetS1PhiTStripNbr(const int& i) const {return fS1_Phi_T_StripNbr.at(i);} const int GetS1PhiTStripNbr(const int& i) const {return fS1_Phi_T_StripNbr.at(i);}
const double GetS1PhiTTime(const int& i) const {return fS1_Phi_T_Time.at(i);} const double GetS1PhiTTime(const int& i) const {return fS1_Phi_T_Time.at(i);}
......
...@@ -149,7 +149,7 @@ void AnnularS1::VolumeMaker(G4int DetecNumber, ...@@ -149,7 +149,7 @@ void AnnularS1::VolumeMaker(G4int DetecNumber,
// Wafer Shape to be substracted to the PCB // Wafer Shape to be substracted to the PCB
G4Tubs* solidWaferShapeBase = new G4Tubs("WaferShape", G4Tubs* solidWaferShapeBase = new G4Tubs("WaferShape",
WaferInnerRadius, 0,
WaferOutterRadius, WaferOutterRadius,
PCBThickness, PCBThickness,
0*deg, 0*deg,
...@@ -179,17 +179,10 @@ void AnnularS1::VolumeMaker(G4int DetecNumber, ...@@ -179,17 +179,10 @@ void AnnularS1::VolumeMaker(G4int DetecNumber,
// PCB final // PCB final
G4SubtractionSolid* solidPCB1 = new G4SubtractionSolid("AnnularS1_PCB1", G4SubtractionSolid* solidPCB = new G4SubtractionSolid("AnnularS1_PCB1",
solidPCBBase, solidPCBBase,
solidWaferShape); solidWaferShape);
G4Tubs* solidTub =
new G4Tubs("central_hole",0,PCBInnerRadius,PCBThickness,0,360*deg);
G4SubtractionSolid* solidPCB = new G4SubtractionSolid("AnnularS1_PCB",
solidPCB1,
solidTub);
G4LogicalVolume* logicPCB = new G4LogicalVolume(solidPCB, Vacuum, "AnnularS1_PCB", 0, 0, 0); G4LogicalVolume* logicPCB = new G4LogicalVolume(solidPCB, Vacuum, "AnnularS1_PCB", 0, 0, 0);
new G4PVPlacement(G4Transform3D(*norotation, G4ThreeVector()), new G4PVPlacement(G4Transform3D(*norotation, G4ThreeVector()),
......
...@@ -119,8 +119,8 @@ namespace ANNULARS1{ ...@@ -119,8 +119,8 @@ namespace ANNULARS1{
// PCB // PCB
const G4double PCBPointsX[8]={-40,40,60,60,40,-40,-60,-60}; const G4double PCBPointsX[8]={-40,40,60,60,40,-40,-60,-60};
const G4double PCBPointsY[8]={60,60,40,-40,-60,-60,-40,40}; const G4double PCBPointsY[8]={60,60,40,-40,-60,-60,-40,40};
const G4double PCBThickness=2*mm; const G4double PCBThickness=3.2*mm;
const G4double PCBInnerRadius=20*mm; const G4double PCBInnerRadius=0*mm;
// Wafer // Wafer
const G4double WaferOutterRadius = 50*mm; const G4double WaferOutterRadius = 50*mm;
const G4double WaferInnerRadius = 23*mm; const G4double WaferInnerRadius = 23*mm;
......
This diff is collapsed.
...@@ -31,183 +31,224 @@ ...@@ -31,183 +31,224 @@
#include <vector> #include <vector>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
namespace MUST2 namespace MUST2{
{ // Resolution //
// Resolution const G4double ResoTimeMust = 0.212765957 ;// = 500ps // Unit is ns/2.35
const G4double ResoTimeMust = 0.212765957 ;// = 500ps // Unit is ns/2.35 const G4double ResoSiLi = 0.055 ;// = 130 keV of resolution // Unit is MeV/2.35
const G4double ResoSiLi = 0.055 ;// = 130 keV of resolution // Unit is MeV/2.35 const G4double ResoCsI = 0.08 ;// = 188 kev of resolution // Unit is MeV/2.35
const G4double ResoCsI = 0.08 ;// = 188 kev of resolution // Unit is MeV/2.35 const G4double ResoStrip = 0.022 ;// = 52keV of Resolution // Unit is MeV/2.35
const G4double ResoStrip = 0.022 ;// = 52keV of Resolution // Unit is MeV/2.35
// Geometry //
// Geometry
const G4double FaceFront = 11.*cm ; // Si
const G4double FaceBack = 16.5*cm ; const G4double PCBPointsX[4]={52.25*mm,-61.75*mm,-61.75*mm,52.25*mm};
const G4double Length = 7.2*cm ; const G4double PCBPointsY[4]={61.75*mm,61.75*mm,-52.25*mm,-52.25*mm};
const G4double PCBThickness = 3.2*mm;
const G4double AluStripThickness = 0.4*micrometer ; const G4double WaferSize = 100.6*mm ;
const G4double SiliconThickness = 300*micrometer ; const G4double WaferThickness = 300*micrometer;
const G4double SiliconFace = 98*mm ; const G4double ActiveWaferSize = 100.5*mm ;
const G4double VacBoxThickness = 3*cm ; const G4double AluStripThickness = 0.4*micrometer ;
const G4double SiLiThickness = 5.1*mm; // Must be checked // Supporting Front Frame
const G4double SiLiFaceX = 48.25*mm; // The Si is screw on this frame
const G4double SiLiFaceY = 92*mm; // The SiLi slide into it
const G4double MylarCsIThickness = 3*micrometer; // The front face of the frame is same size as the PCB
const G4double CsIThickness = 4.*cm + 2*MylarCsIThickness ; const G4double FrontFrameBackSize = 144*mm;
const G4double CsIFaceFront = 12.2*cm; const G4double FrontFrameThickness = 27*mm;
const G4double CsIFaceBack = 16*cm; const G4double FrontFrameFrontSize = 120*mm;
const G4double DistInterCsI = 0.2*mm;
const G4double CavityShape1FrontSize = 103*mm;
// Starting at the front and going to CsI const G4double CavityShape1BackSize = 121*mm;
const G4double AluStripFront_PosZ = Length* -0.5 + 0.5*AluStripThickness;
const G4double Silicon_PosZ = AluStripFront_PosZ + 0.5*AluStripThickness + 0.5*SiliconThickness; const G4double CavityShape2Thickness = 18*mm;
const G4double AluStripBack_PosZ = Silicon_PosZ + 0.5*SiliconThickness + 0.5*AluStripThickness; const G4double CavityShape2Width = 115*mm;
const G4double VacBox_PosZ = AluStripBack_PosZ + 0.5*AluStripThickness + 0.5* VacBoxThickness; const G4double CavityShape2Center = 4.25*mm;
const G4double CsI_PosZ = VacBox_PosZ + 0.5*VacBoxThickness + 0.5*CsIThickness; // SiLi
// CsI
// Frame
// Electronic and cooling
const G4double MUFEESize = 120*mm;
const G4double MUFEEThickness = 2*mm;
const G4double CoolingThickness = 20*mm;
const G4double CoolingDistanceShort = FrontFrameThickness;
const G4double CoolingDistanceLong = 113.5*mm;
const G4double FaceFront = 11.*cm ;
const G4double FaceBack = 16.5*cm ;
const G4double Length = 7.2*cm ;
const G4double VacBoxThickness = 3*cm ;
const G4double SiLiThickness = 5.1*mm;
const G4double SiLiFaceX = 48.25*mm;
const G4double SiLiFaceY = 92*mm;
const G4double MylarCsIThickness = 3*micrometer;
const G4double CsIThickness = 4.*cm + 2*MylarCsIThickness ;
const G4double CsIFaceFront = 12.2*cm;
const G4double CsIFaceBack = 16*cm;
const G4double DistInterCsI = 0.2*mm;
// Starting at the front and going to CsI
const G4double AluStripFront_PosZ = Length* -0.5 + 0.5*AluStripThickness;
const G4double Silicon_PosZ = AluStripFront_PosZ + 0.5*AluStripThickness + 0.5*WaferThickness;
const G4double AluStripBack_PosZ = Silicon_PosZ + 0.5*WaferThickness + 0.5*AluStripThickness;
const G4double VacBox_PosZ = AluStripBack_PosZ + 0.5*AluStripThickness + 0.5* VacBoxThickness;
const G4double CsI_PosZ = VacBox_PosZ + 0.5*VacBoxThickness + 0.5*CsIThickness;
} }
class MUST2Array : public VDetector class MUST2Array : public VDetector{
{ ////////////////////////////////////////////////////
//////////////////////////////////////////////////// /////// Default Constructor and Destructor /////////
/////// Default Constructor and Destructor ///////// ////////////////////////////////////////////////////
//////////////////////////////////////////////////// public:
public: MUST2Array() ;
MUST2Array() ; virtual ~MUST2Array() ;
virtual ~MUST2Array() ;
////////////////////////////////////////////////////
//////////////////////////////////////////////////// //////// Specific Function of this Class ///////////
//////// Specific Function of this Class /////////// ////////////////////////////////////////////////////
//////////////////////////////////////////////////// public:
public: // By Position Method
// By Position Method void AddTelescope( G4ThreeVector TL ,
void AddTelescope( G4ThreeVector TL , G4ThreeVector BL ,
G4ThreeVector BL , G4ThreeVector BR ,
G4ThreeVector BR , G4ThreeVector CT ,
G4ThreeVector CT , bool wSi ,
bool wSi , bool wSiLi ,
bool wSiLi , bool wCsI );
bool wCsI ); // By Angle Method
// By Angle Method void AddTelescope( G4double R ,
void AddTelescope( G4double R , G4double Theta ,
G4double Theta , G4double Phi ,
G4double Phi , G4double beta_u ,
G4double beta_u , G4double beta_v ,
G4double beta_v , G4double beta_w ,
G4double beta_w , bool wSi ,
bool wSi , bool wSiLi ,
bool wSiLi , bool wCsI );
bool wCsI );
// Effectively construct Volume
// Effectively construct Volume // Avoid to have two time same code for Angle and Point definition
// Avoid to have two time same code for Angle and Point definition void VolumeMaker( G4int TelescopeNumber ,
void VolumeMaker( G4int TelescopeNumber , G4ThreeVector MMpos ,
G4ThreeVector MMpos , G4RotationMatrix* MMrot ,
G4RotationMatrix* MMrot , bool wSi ,
bool wSi , bool wSiLi ,
bool wSiLi , bool wCsI ,
bool wCsI , G4LogicalVolume* world );
G4LogicalVolume* world );
// Return the logic volume associate to different MUST2 Geometry:
//////////////////////////////////////////////////// G4LogicalVolume* GetLogicalVolumeMUST2Short();
///////// Inherite from VDetector class /////////// G4LogicalVolume* GetLogicalVolumeMUST2NoSiLi();
//////////////////////////////////////////////////// G4LogicalVolume* GetLogicalVolumeMUST2Full();
public:
// Read stream at Configfile to pick-up parameters of detector (Position,...) ////////////////////////////////////////////////////
// Called in DetecorConstruction::ReadDetextorConfiguration Method ///////// Inherite from VDetector class ///////////
void ReadConfiguration(string Path); ////////////////////////////////////////////////////
public:
// Construct detector and inialise sensitive part. // Read stream at Configfile to pick-up parameters of detector (Position,...)
// Called After DetecorConstruction::AddDetector Method // Called in DetecorConstruction::ReadDetextorConfiguration Method
void ConstructDetector(G4LogicalVolume* world); void ReadConfiguration(string Path);
// Add Detector branch to the EventTree. // Construct detector and inialise sensitive part.
// Called After DetecorConstruction::AddDetector Method // Called After DetecorConstruction::AddDetector Method
void InitializeRootOutput(); void ConstructDetector(G4LogicalVolume* world);
// Read sensitive part and fill the Root tree. // Add Detector branch to the EventTree.
// Called at in the EventAction::EndOfEventAvtion // Called After DetecorConstruction::AddDetector Method
void ReadSensitive(const G4Event* event); void InitializeRootOutput();
// Read sensitive part and fill the Root tree.
//////////////////////////////////////////////////// // Called at in the EventAction::EndOfEventAvtion
///////////Event class to store Data//////////////// void ReadSensitive(const G4Event* event);
////////////////////////////////////////////////////
private:
TMust2Data* m_Event; ////////////////////////////////////////////////////
///////////Event class to store Data////////////////
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
///////////////Private intern Data////////////////// private:
//////////////////////////////////////////////////// TMust2Data* m_Event;
private:
// True if Define by Position, False is Define by angle ////////////////////////////////////////////////////
vector<bool> m_DefinitionType ; ///////////////Private intern Data//////////////////
////////////////////////////////////////////////////
// Used for "By Point Definition" private:
vector<G4ThreeVector> m_X1_Y1 ; // Top Left Corner Position Vector // True if Define by Position, False is Define by angle
vector<G4ThreeVector> m_X1_Y128 ; // Bottom Left Corner Position Vector vector<bool> m_DefinitionType ;
vector<G4ThreeVector> m_X128_Y1 ; // Bottom Right Corner Position Vector
vector<G4ThreeVector> m_X128_Y128 ; // Center Corner Position Vector // Used for "By Point Definition"
vector<G4ThreeVector> m_X1_Y1 ; // Top Left Corner Position Vector
// Used for "By Angle Definition" vector<G4ThreeVector> m_X1_Y128 ; // Bottom Left Corner Position Vector
vector<G4double> m_R ; // | vector<G4ThreeVector> m_X128_Y1 ; // Bottom Right Corner Position Vector
vector<G4double> m_Theta ; // > Spherical coordinate of Strips Silicium Plate vector<G4ThreeVector> m_X128_Y128 ; // Center Corner Position Vector
vector<G4double> m_Phi ; // |
// Used for "By Angle Definition"
vector<G4double> m_beta_u ; // | vector<G4double> m_R ; // |
vector<G4double> m_beta_v ; // > Tilt angle of the Telescope vector<G4double> m_Theta ; // > Spherical coordinate of Strips Silicium Plate
vector<G4double> m_beta_w ; // | vector<G4double> m_Phi ; // |
// If Set to true if you want this stage on you telescope vector<G4double> m_beta_u ; // |
vector<bool> m_wSi ; // Silicium Strip 300um 128*128 Strip vector<G4double> m_beta_v ; // > Tilt angle of the Telescope
vector<bool> m_wSiLi ; // Si(Li) 2*4 Pad vector<G4double> m_beta_w ; // |
vector<bool> m_wCsI ; // CsI 4*4 crystal
vector<bool> m_wAddSi ; // Additionnal Thin Silicium Strip // If Set to true if you want this stage on you telescope
vector<bool> m_wSi ; // Silicium Strip 300um 128*128 Strip
// Set to true if you want to see Telescope Frame in your visualisation vector<bool> m_wSiLi ; // Si(Li) 2*4 Pad
bool m_non_sensitive_part_visiualisation ; vector<bool> m_wCsI ; // CsI 4*4 crystal
vector<bool> m_wAddSi ; // Additionnal Thin Silicium Strip
//////////////////////////////////////////////////// // Set to true if you want to see Telescope Frame in your visualisation
///////////////////// Scorer /////////////////////// bool m_non_sensitive_part_visiualisation ;
////////////////////////////////////////////////////
private: ////////////////////////////////////////////////////
// Initialize all Scorer used by the MUST2Array ///////////////////// Scorer ///////////////////////
void InitializeScorers() ; ////////////////////////////////////////////////////
private:
// Silicon Associate Scorer // Initialize all Scorer used by the MUST2Array
G4MultiFunctionalDetector* m_StripScorer ; void InitializeScorers() ;
// Silicon Associate Scorer
// SiLi Associate Scorer G4MultiFunctionalDetector* m_StripScorer ;
G4MultiFunctionalDetector* m_SiLiScorer ;
// SiLi Associate Scorer
G4MultiFunctionalDetector* m_SiLiScorer ;
// CsI Associate Scorer // CsI Associate Scorer
G4MultiFunctionalDetector* m_CsIScorer ; G4MultiFunctionalDetector* m_CsIScorer ;
////////////////////////////////////////////////////
//////////////////// Material //////////////////////
////////////////////////////////////////////////////
private:
// Declare all material used by the MUST2Array
void InitializeMaterial() ;
// Si
G4Material* m_MaterialSilicon;
// Al
G4Material* m_MaterialAluminium;
// Iron
G4Material* m_MaterialIron;
// CsI
G4Material* m_MaterialCsI;
// Vacuum
G4Material* m_MaterialVacuum ;
// Mylar
G4Material* m_MaterialMyl;
// Havar
G4Material* m_MaterialHarvar;
////////////////////////////////////////////////////
//////////////////// Material //////////////////////
////////////////////////////////////////////////////
private:
// Declare all material used by the MUST2Array
void InitializeMaterial() ;
// Si
G4Material* m_MaterialSilicon;
// Al
G4Material* m_MaterialAluminium;
// Iron
G4Material* m_MaterialIron;
// CsI
G4Material* m_MaterialCsI;
// Vacuum
G4Material* m_MaterialVacuum ;
// Mylar
G4Material* m_MaterialMyl;
////////////////////////////////////////////////////
//////////////// Visual Attribute //////////////////
////////////////////////////////////////////////////
G4VisAttributes* m_PCBVisAtt;
G4VisAttributes* m_SiliconVisAtt;
G4VisAttributes* m_SiLiVisAtt;
G4VisAttributes* m_CsIVisAtt;
G4VisAttributes* m_CoolingVisAtt;
}; };
......
...@@ -4,7 +4,7 @@ NPSIM = NPSimulation ...@@ -4,7 +4,7 @@ NPSIM = NPSimulation
all: $(DELFILES) $(COPYFILES) $(NPSIM) all: $(DELFILES) $(COPYFILES) $(NPSIM)
DelIncSrcFiles: DelIncSrcFiles: $(NPTOOL)/NPLib/liblist
./scripts/deletefiles.sh ./scripts/deletefiles.sh
CopyIncSrcFiles: DelIncSrcFiles CopyIncSrcFiles: DelIncSrcFiles
......
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