Skip to content
Snippets Groups Projects
Commit 414f5e07 authored by Pierre Morfouace's avatar Pierre Morfouace
Browse files

Update of Hira.cc and Hira.hh

parent fbd312a6
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ Isotropic ...@@ -7,7 +7,7 @@ Isotropic
EnergyLow= 0 EnergyLow= 0
EnergyHigh= 201 EnergyHigh= 201
HalfOpenAngleMin= 0 HalfOpenAngleMin= 0
HalfOpenAngleMax= 1 HalfOpenAngleMax= 90
x0= 0 x0= 0
y0= 0 y0= 0
z0= 0 z0= 0
......
...@@ -42,9 +42,10 @@ G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){ ...@@ -42,9 +42,10 @@ G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){
G4double* Infos = new G4double[2+mysize]; G4double* Infos = new G4double[2+mysize];
Infos[0] = aStep->GetTotalEnergyDeposit(); Infos[0] = aStep->GetTotalEnergyDeposit();
Infos[1] = aStep->GetPreStepPoint()->GetGlobalTime(); Infos[1] = aStep->GetPreStepPoint()->GetGlobalTime();
cout << "my size = " << mysize << endl;
for(unsigned int i = 0 ; i < mysize ; i++){ for(unsigned int i = 0 ; i < mysize ; i++){
Infos[i+2] = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]); Infos[i+2] = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]);
cout << i+2 << " " << Infos[i+2] << endl;
} }
m_Index = 0 ; m_Index = 0 ;
......
...@@ -351,7 +351,7 @@ void Hira::ReadSensitive(const G4Event* event){ ...@@ -351,7 +351,7 @@ void Hira::ReadSensitive(const G4Event* event){
double E_ThickSi = RandGauss::shoot(Info[0],ResoThickSi); double E_ThickSi = RandGauss::shoot(Info[0],ResoThickSi);
if(E_ThickSi>EnergyThreshold){ if(E_ThickSi>EnergyThreshold){
m_EventHira->SetHiraThickSiStripXEEnergy(E_ThickSi); m_EventHira->SetHiraThickSiStripXEEnergy(E_ThickSi);
m_EventHira->SetHiraThickSiStripXEDetectorNbr(Info[7]); m_EventHira->SetHiraThickSiStripXEDetectorNbr(Info[7]);
m_EventHira->SetHiraThickSiStripXEStripNbr(Info[8]); m_EventHira->SetHiraThickSiStripXEStripNbr(Info[8]);
m_EventHira->SetHiraThickSiStripXTTime(Info[1]); m_EventHira->SetHiraThickSiStripXTTime(Info[1]);
...@@ -359,7 +359,7 @@ void Hira::ReadSensitive(const G4Event* event){ ...@@ -359,7 +359,7 @@ void Hira::ReadSensitive(const G4Event* event){
m_EventHira->SetHiraThickSiStripXTStripNbr(Info[8]); m_EventHira->SetHiraThickSiStripXTStripNbr(Info[8]);
m_EventHira->SetHiraThickSiStripYEEnergy(E_ThickSi); m_EventHira->SetHiraThickSiStripYEEnergy(E_ThickSi);
m_EventHira->SetHiraThickSiStripYEDetectorNbr(Info[7]); m_EventHira->SetHiraThickSiStripYEDetectorNbr(Info[7]);
m_EventHira->SetHiraThickSiStripYEStripNbr(Info[9]); m_EventHira->SetHiraThickSiStripYEStripNbr(Info[9]);
m_EventHira->SetHiraThickSiStripYTTime(Info[1]); m_EventHira->SetHiraThickSiStripYTTime(Info[1]);
...@@ -381,9 +381,9 @@ void Hira::ReadSensitive(const G4Event* event){ ...@@ -381,9 +381,9 @@ void Hira::ReadSensitive(const G4Event* event){
G4double* Info = *(CsI_itr->second); G4double* Info = *(CsI_itr->second);
double E_CsI = RandGauss::shoot(Info[0],ResoCsI); double E_CsI = RandGauss::shoot(Info[0],ResoCsI);
if(E_CsI>EnergyThreshold){ if(E_CsI>EnergyThreshold){
m_EventHira->SetHiraCsIEEnergy(E_CsI); m_EventHira->SetHiraCsIEEnergy(E_CsI);
m_EventHira->SetHiraCsIEDetectorNbr(Info[3]); m_EventHira->SetHiraCsIEDetectorNbr((int)Info[2]);
m_EventHira->SetHiraCsIECristalNbr(Info[2]); m_EventHira->SetHiraCsIECristalNbr((int)Info[3]);
} }
} }
// Clear Map for next event // Clear Map for next event
...@@ -463,7 +463,7 @@ void Hira::VolumeMaker(G4int DetectorNumber, ...@@ -463,7 +463,7 @@ void Hira::VolumeMaker(G4int DetectorNumber,
// Definition of the volume containing the sensitive detector // Definition of the volume containing the sensitive detector
G4Box* solidMotherVolume = new G4Box(Name, 0.5*FaceFront, 0.5*FaceBack, 0.5*Length); G4Box* solidMotherVolume = new G4Box(Name, 0.5*FaceFront, 0.5*FaceBack, 0.5*Length);
G4LogicalVolume* m_logicMotherVolume = new G4LogicalVolume(solidMotherVolume, m_MaterialVacuum, Name, 0, 0, 0); m_logicMotherVolume = new G4LogicalVolume(solidMotherVolume, m_MaterialVacuum, Name, 0, 0, 0);
new G4PVPlacement(G4Transform3D(*MMrot, MMpos), m_logicMotherVolume, Name, world, false, DetectorNumber); new G4PVPlacement(G4Transform3D(*MMrot, MMpos), m_logicMotherVolume, Name, world, false, DetectorNumber);
...@@ -522,10 +522,10 @@ void Hira::VolumeMaker(G4int DetectorNumber, ...@@ -522,10 +522,10 @@ void Hira::VolumeMaker(G4int DetectorNumber,
/////////////////////////////////////////////////// ///////////////////////////////////////////////////
G4String NameCsI = "CsI"+DetNumber; G4String NameCsI = "CsI"+DetNumber;
G4Trd* solidCsIStage = new G4Trd(NameCsI, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIThickness); G4Trd* solidCsIStage = new G4Trd(NameCsI, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIThickness);
m_LogicCsICrystal = new G4LogicalVolume(solidCsIStage, m_MaterialCsI, "logicCsICrystal", 0, 0, 0); m_LogicCsICrystal = new G4LogicalVolume(solidCsIStage, m_MaterialCsI, "logicCsICrystal", 0, 0, 0);
// Set CsI sensible // Set CsI sensible
m_LogicCsICrystal->SetSensitiveDetector(m_CsIScorer); m_LogicCsICrystal->SetSensitiveDetector(m_CsIScorer);
// Visualisation of CsI // Visualisation of CsI
m_LogicCsICrystal->SetVisAttributes(m_CsIVisAtt); m_LogicCsICrystal->SetVisAttributes(m_CsIVisAtt);
...@@ -535,7 +535,7 @@ void Hira::VolumeMaker(G4int DetectorNumber, ...@@ -535,7 +535,7 @@ void Hira::VolumeMaker(G4int DetectorNumber,
// Sub Mother Volume // Sub Mother Volume
G4Trd* solidCluster = new G4Trd("SolidCluster", 0.5*ClusterFaceFront,0.5*ClusterFaceBack,0.5*ClusterFaceFront,0.5*ClusterFaceBack, 0.5*CsIThickness); G4Trd* solidCluster = new G4Trd("SolidCluster", 0.5*ClusterFaceFront,0.5*ClusterFaceBack,0.5*ClusterFaceFront,0.5*ClusterFaceBack, 0.5*CsIThickness);
m_LogicCluster = new G4LogicalVolume(solidCluster, m_MaterialVacuum, "LogicSolidCluster", 0, 0, 0); m_LogicCluster = new G4LogicalVolume(solidCluster, m_MaterialVacuum, "LogicSolidCluster", 0, 0, 0);
m_LogicCluster->SetVisAttributes(G4VisAttributes::Invisible); m_LogicCluster->SetVisAttributes(G4VisAttributes::Invisible);
G4ThreeVector FramePos(0,0,CsI_PosZ); G4ThreeVector FramePos(0,0,CsI_PosZ);
...@@ -552,147 +552,21 @@ void Hira::VolumeMaker(G4int DetectorNumber, ...@@ -552,147 +552,21 @@ void Hira::VolumeMaker(G4int DetectorNumber,
unsigned int CsINbr = 1; unsigned int CsINbr = 1;
for(unsigned int i = 0 ; i < 2 ; i++){ for(unsigned int i = 0 ; i < 2 ; i++){
for(unsigned int j = 0 ; j <2 ; j++){ for(unsigned int j = 0 ; j <2 ; j++){
G4ThreeVector Pos = Origin + G4ThreeVector(i*CsIFaceFront,j*CsIFaceFront,0); unsigned int CrystalNbr = CsINbr++;
G4ThreeVector Pos = Origin + G4ThreeVector(i*DistInterCsIX,j*DistInterCsIY,0);
new G4PVPlacement(0, new G4PVPlacement(0,
Pos, Pos,
m_LogicCsICrystal, m_LogicCsICrystal,
"CsI_Cristal", "CsI_Cristal",
m_LogicCluster, m_LogicCluster,
false, false,
CsINbr++); CrystalNbr);
} }
} }
/*G4LogicalVolume* LogicClusterFrame = new G4LogicalVolume(solidCluster, m_MaterialCsI, "LogicSolidClusterFrame", 0, 0, 0); }
LogicClusterFrame->SetVisAttributes(m_CsIVisAtt);
new G4PVPlacement(0,
FramePos,
LogicClusterFrame,
"ClusterFrame",
m_LogicCluster,
false,
0);*/
}
//ConstructThinSi();
//ConstructThickSi();
//ConstructCsICrystal();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Hira::ConstructCsICrystal(){
if(!m_LogicCsICrystal){
G4Trd* solidCsICrystal = new G4Trd("solidCsICrystal",0.5*CsIFaceFront,0.5*CsIFaceBack,0.5*CsIFaceFront,0.5*CsIFaceBack, 0.5*CsIThickness);
m_LogicCsICrystal = new G4LogicalVolume(solidCsICrystal, m_MaterialVacuum, "logicCsI", 0, 0, 0);
m_LogicCsICrystal->SetVisAttributes(G4VisAttributes::Invisible);
// CsI
G4Trd* solidCsIStage = new G4Trd("solidLaBr3Stage", 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIThickness);
G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, m_MaterialCsI, "logicCsIStage", 0, 0, 0);
G4ThreeVector positionCsICrystal = G4ThreeVector(0, 0, CsI_PosZ);
new G4PVPlacement(new G4RotationMatrix(0,0,0),
positionCsICrystal,
logicCsIStage,"CsICrystal",
m_LogicCsICrystal,false,0);
// Set CsI sensible
logicCsIStage->SetSensitiveDetector(m_CsIScorer);
// Visualisation of CsI
logicCsIStage->SetVisAttributes(m_CsIVisAtt);
}
if(!m_LogicCluster){
// Mother Volume
G4Trd* solidCluster = new G4Trd("SolidCluster", 0.5*CsIFaceFront,0.5*CsIFaceBack,0.5*CsIFaceFront,0.5*CsIFaceBack, 0.5*CsIThickness);
m_LogicCluster = new G4LogicalVolume(solidCluster, m_MaterialVacuum, "LogicSolidCluster", 0, 0, 0);
m_LogicCluster->SetVisAttributes(G4VisAttributes::Invisible);
G4ThreeVector Origin(-CsIFaceFront,-CsIFaceFront,0);
G4ThreeVector FramePos(0,0,CsI_PosZ);
// A cluster is a 2 by 2 aggregat of CsI crystal
unsigned int CsINbr = 1;
for(unsigned int i = 0 ; i < 2 ; i++){
for(unsigned int j = 0 ; j <2 ; j++){
G4ThreeVector Pos = Origin + G4ThreeVector(i*CsIFaceFront,j*CsIFaceFront,0);
new G4PVPlacement(0,
Pos,
m_LogicCsICrystal,
"CsI_Cristal",
m_LogicCluster,
false,
CsINbr++);
}
}
G4LogicalVolume* LogicClusterFrame = new G4LogicalVolume(solidCluster, m_MaterialCsI, "LogicSolidClusterFrame", 0, 0, 0);
LogicClusterFrame->SetVisAttributes(m_CsIVisAtt);
new G4PVPlacement(0,
FramePos,
LogicClusterFrame,
"ClusterFrame",
m_LogicCluster,
false,
0);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Hira::ConstructThinSi(){
cout << "coucou1" << endl;
G4String Name = "ThinSi";
if(!m_LogicThinSi){
cout << "coucou2" << endl;
G4Box* solidThinSi = new G4Box(Name, 0.5*SiliconFace, 0.5*SiliconFace, 0.5*ThinSiThickness); ;
m_LogicThinSi = new G4LogicalVolume(solidThinSi, m_MaterialSilicon, "logicThinSi", 0, 0, 0);
G4ThreeVector positionThinSi = G4ThreeVector(0, 0, ThinSi_PosZ);
cout << "coucou3" << endl;
new G4PVPlacement(new G4RotationMatrix(0,0,0),
positionThinSi,
m_LogicThinSi,"ThinSi",
m_logicMotherVolume,false,0);
cout << "coucou4" << endl;
// Set ThinSi sensible
m_LogicThinSi->SetSensitiveDetector(m_ThinSiStripScorer);
// Visualisation of ThinSi
m_LogicThinSi->SetVisAttributes(m_SiliconVisAtt) ;
}
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Hira::ConstructThickSi(){
G4String Name = "ThickSi";
if(!m_LogicThickSi){
G4Box* solidThickSi = new G4Box(Name, 0.5*SiliconFace, 0.5*SiliconFace, 0.5*ThickSiThickness);
m_LogicThickSi = new G4LogicalVolume(solidThickSi, m_MaterialSilicon, "logicThickSi", 0, 0, 0);
G4ThreeVector positionThickSi = G4ThreeVector(0, 0, ThickSi_PosZ);
new G4PVPlacement(new G4RotationMatrix(0,0,0),
positionThickSi,
m_LogicThickSi,"ThickSi",
m_logicMotherVolume,false,0);
// Set ThickSi sensible
m_LogicThickSi->SetSensitiveDetector(m_ThickSiStripScorer);
// Visualisation of ThickSi
m_LogicThickSi->SetVisAttributes(m_SiliconVisAtt) ;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Hira::InitializeMaterial(){ void Hira::InitializeMaterial(){
m_MaterialSilicon = MaterialManager::getInstance()->GetMaterialFromLibrary("Si"); m_MaterialSilicon = MaterialManager::getInstance()->GetMaterialFromLibrary("Si");
......
...@@ -67,9 +67,11 @@ namespace HIRA ...@@ -67,9 +67,11 @@ namespace HIRA
const G4double VacBoxThickness = 1*cm ; const G4double VacBoxThickness = 1*cm ;
const G4double MylarCsIThickness = 3*micrometer; const G4double MylarCsIThickness = 3*micrometer;
const G4double CsIThickness = 4.*cm + 2*MylarCsIThickness ; const G4double CsIThickness = 4.*cm + 2*MylarCsIThickness ;
const G4double CsIFaceFront = 3.2*cm; const G4double CsIFaceFront = 30.*mm;//3.2*cm;
const G4double CsIFaceBack = 3.7*cm; const G4double CsIFaceBack = 30.*mm;//3.7*cm;
const G4double DistInterCsI = 0.2*mm; const G4double DistInterCsI = 0.2*mm;
const G4double DistInterCsIX = CsIFaceFront+DistInterCsI;
const G4double DistInterCsIY = CsIFaceFront+DistInterCsI;
const G4double ClusterFaceFront = 7*cm; const G4double ClusterFaceFront = 7*cm;
const G4double ClusterFaceBack = 9*cm; const G4double ClusterFaceBack = 9*cm;
...@@ -128,13 +130,7 @@ private: ...@@ -128,13 +130,7 @@ private:
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
//////// Specific Function of this Class /////////// //////// Specific Function of this Class ///////////
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
public:
// To add a box detector
// Effectively construct Volume
void ConstructCsICrystal();
void ConstructThinSi();
void ConstructThickSi();
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
///////// Inherite from VDetector class /////////// ///////// Inherite from VDetector class ///////////
......
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