Skip to content
Snippets Groups Projects
Commit 4665714b authored by Adrien Matta's avatar Adrien Matta :skull_crossbones:
Browse files

* Fixing issue where using Dali and Minos lead to unconsistant Dali Det

Nbr
        - The issue was in the Calorimeter scorer
        - The size of the level vector was access via a static
parent 3daa6597
No related branches found
No related tags found
No related merge requests found
/***************************************************************************** /*****************************************************************************
* Copyright (C) 2009-2018 this file is part of the NPTool Project * * Copyright (C) 2009-2018 this file is part of the NPTool Project *
* * * *
* For the licensing terms see $NPTOOL/Licence/NPTool_Licence * * For the licensing terms see $NPTOOL/Licence/NPTool_Licence *
* For the list of contributors see $NPTOOL/Licence/Contributors * * For the list of contributors see $NPTOOL/Licence/Contributors *
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** /*****************************************************************************
* Original Author: Elidiano Tronchin contact address: elidiano.tronchin@studenti.unipd.it * * Original Author: E. Tronchin *
* contact address: elidiano.tronchin@studenti.unipd.it *
* * * *
* Creation Date : septembre 2018 * * Creation Date : septembre 2018 *
* Last update : * * Last update : *
*---------------------------------------------------------------------------* *---------------------------------------------------------------------------*
* Decription: * * Decription: *
* This class describe Dali simulation * * This class describe Dali simulation *
* * * *
*---------------------------------------------------------------------------* *---------------------------------------------------------------------------*
* Comment: * * Comment: *
...@@ -379,8 +380,6 @@ void Dali::ReadSensitive(const G4Event* ){ ...@@ -379,8 +380,6 @@ void Dali::ReadSensitive(const G4Event* ){
int DetectorNbr = (ArrayNbr-1)*3+DetectinsArrayNbr; int DetectorNbr = (ArrayNbr-1)*3+DetectinsArrayNbr;
m_Event->SetEnergy(DetectorNbr,Energy); m_Event->SetEnergy(DetectorNbr,Energy);
m_Event->SetTime(DetectorNbr,Time); m_Event->SetTime(DetectorNbr,Time);
} }
} }
} }
...@@ -390,7 +389,7 @@ void Dali::ReadSensitive(const G4Event* ){ ...@@ -390,7 +389,7 @@ void Dali::ReadSensitive(const G4Event* ){
void Dali::InitializeScorers() { void Dali::InitializeScorers() {
// This check is necessary in case the geometry is reloaded // This check is necessary in case the geometry is reloaded
bool already_exist = false; bool already_exist = false;
vector<G4int> NestingLevel; vector<int> NestingLevel;
NestingLevel.push_back(2); NestingLevel.push_back(2);
NestingLevel.push_back(3); NestingLevel.push_back(3);
...@@ -400,7 +399,7 @@ void Dali::InitializeScorers() { ...@@ -400,7 +399,7 @@ void Dali::InitializeScorers() {
return ; //Necessary? return ; //Necessary?
// Otherwise the scorer is initialised // Otherwise the scorer is initialised
vector<int> level; level.push_back(0); // vector<int> level; level.push_back(0);
G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter", NestingLevel) ; G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter", NestingLevel) ;
G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ; G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
//and register it to the multifunctionnal detector //and register it to the multifunctionnal detector
......
/***************************************************************************** /*****************************************************************************
* Copyright (C) 2009-2018 this file is part of the NPTool Project * * Copyright (C) 2009-2018 this file is part of the NPTool Project *
* * * *
* For the licensing terms see $NPTOOL/Licence/NPTool_Licence * * For the licensing terms see $NPTOOL/Licence/NPTool_Licence *
* For the list of contributors see $NPTOOL/Licence/Contributors * * For the list of contributors see $NPTOOL/Licence/Contributors *
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** /*****************************************************************************
* Original Author: Elidiano Tronchin contact address: tronchin@lpccaen.in2p3.fr * * Original Author: E. Tronchin contact address: tronchin@lpccaen.in2p3.fr *
* * * *
* Creation Date : October 2018 * * Creation Date : October 2018 *
* Last update : * * Last update : *
*---------------------------------------------------------------------------* *---------------------------------------------------------------------------*
* Decription: * * Decription: *
* This class describe Minos simulation * * This class describe Minos simulation *
* * * *
*---------------------------------------------------------------------------* *---------------------------------------------------------------------------*
* Comment: * * Comment: *
...@@ -83,6 +83,24 @@ Minos::Minos(){ ...@@ -83,6 +83,24 @@ Minos::Minos(){
// RGB Color + Transparency // RGB Color + Transparency
m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5)); m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));
m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5)); m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));
solidTarget=0;
logicTarget=0;
solidChamber=0;
logicChamber=0;
solidTPC=0;
logicTPC=0;
solidWindow0=0;
logicWindow0=0;
solidWindow1=0;
logicWindow1=0;
solidWindow2=0;
logicWindow2=0;
solidInnerRohacell=0;
logicInnerRohacell=0;
solidOuterRohacell=0;
logicOuterRohacell=0;
solidKapton=0;
logicKapton=0;
} }
...@@ -127,18 +145,18 @@ void Minos::AddDetector(double R, double Theta, double Phi, string Shape){ ...@@ -127,18 +145,18 @@ void Minos::AddDetector(double R, double Theta, double Phi, string Shape){
void Minos::DefineMaterials() void Minos::DefineMaterials()
{ {
//This function illustrates the possible ways to define materials //This function illustrates the possible ways to define materials
G4String symbol; //a=mass of a mole; G4String symbol; //a=mass of a mole;
G4double a, z, density; //z=mean number of protons; G4double a, z, density; //z=mean number of protons;
G4int ncomponents, natoms; G4int ncomponents, natoms;
G4double fractionmass; G4double fractionmass;
// //
// define Elements // define Elements
// //
G4Element* H = new G4Element("Hydrogen",symbol="H" , z= 1., a= 1.01*g/mole); G4Element* H = new G4Element("Hydrogen",symbol="H" , z= 1., a= 1.01*g/mole);
G4Element* C = new G4Element("Carbon" ,symbol="C" , z= 6., a= 12.01*g/mole); G4Element* C = new G4Element("Carbon" ,symbol="C" , z= 6., a= 12.01*g/mole);
G4Element* F = new G4Element("Fluorin" ,symbol="F" , z= 9., a= 19.0*g/mole); G4Element* F = new G4Element("Fluorin" ,symbol="F" , z= 9., a= 19.0*g/mole);
...@@ -147,16 +165,16 @@ void Minos::DefineMaterials() ...@@ -147,16 +165,16 @@ void Minos::DefineMaterials()
G4Element* Ar = new G4Element("Argon", symbol="Ar", z=18, a=39.948*g/mole); G4Element* Ar = new G4Element("Argon", symbol="Ar", z=18, a=39.948*g/mole);
G4Element* Fe = new G4Element("Fer",symbol="Fe" , z= 26., a= 55.9*g/mole); G4Element* Fe = new G4Element("Fer",symbol="Fe" , z= 26., a= 55.9*g/mole);
G4Element* Cr = new G4Element("Chrome",symbol="Cr" , z= 24., a= 52.*g/mole); G4Element* Cr = new G4Element("Chrome",symbol="Cr" , z= 24., a= 52.*g/mole);
new G4Material("Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3); new G4Material("Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3);
new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3); new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
new G4Material("Lead" , z=82., a= 207.19*g/mole, density= 11.35*g/cm3); new G4Material("Lead" , z=82., a= 207.19*g/mole, density= 11.35*g/cm3);
new G4Material("Silicium", z=14., a=28.09*g/mole, density=2.330*g/cm3); new G4Material("Silicium", z=14., a=28.09*g/mole, density=2.330*g/cm3);
new G4Material("Titanium", z=22., a=47.87*g/mole, density=4.510*g/cm3); new G4Material("Titanium", z=22., a=47.87*g/mole, density=4.510*g/cm3);
G4Material* iso = new G4Material("isobutane", density=0.002506*g/cm3, ncomponents=2); G4Material* iso = new G4Material("isobutane", density=0.002506*g/cm3, ncomponents=2);
iso->AddElement(C, natoms=4); iso->AddElement(C, natoms=4);
iso->AddElement(H, natoms=10); iso->AddElement(H, natoms=10);
...@@ -173,35 +191,35 @@ void Minos::DefineMaterials() ...@@ -173,35 +191,35 @@ void Minos::DefineMaterials()
mix->AddElement(Ar, fractionmass=82.*perCent); mix->AddElement(Ar, fractionmass=82.*perCent);
// overwrite computed meanExcitationEnergy with ICRU recommended value // overwrite computed meanExcitationEnergy with ICRU recommended value
mix->GetIonisation()->SetMeanExcitationEnergy(25.0*eV); mix->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
G4Material* Ar_CF4_95_5 = G4Material* Ar_CF4_95_5 =
new G4Material("Ar_CF4_95_5", density= 0.0017611*g/cm3, ncomponents=2); new G4Material("Ar_CF4_95_5", density= 0.0017611*g/cm3, ncomponents=2);
Ar_CF4_95_5->AddMaterial(CF4, fractionmass=5.*perCent); Ar_CF4_95_5->AddMaterial(CF4, fractionmass=5.*perCent);
Ar_CF4_95_5->AddElement(Ar, fractionmass=95.*perCent); Ar_CF4_95_5->AddElement(Ar, fractionmass=95.*perCent);
Ar_CF4_95_5->GetIonisation()->SetMeanExcitationEnergy(30.0*eV); Ar_CF4_95_5->GetIonisation()->SetMeanExcitationEnergy(30.0*eV);
G4Material* Ar_CF4_90_10 = G4Material* Ar_CF4_90_10 =
new G4Material("Ar_CF4_90_10", density= 0.0018610*g/cm3, ncomponents=2); new G4Material("Ar_CF4_90_10", density= 0.0018610*g/cm3, ncomponents=2);
Ar_CF4_90_10->AddMaterial(CF4, fractionmass=10.*perCent); Ar_CF4_90_10->AddMaterial(CF4, fractionmass=10.*perCent);
Ar_CF4_90_10->AddElement(Ar, fractionmass=90.*perCent); Ar_CF4_90_10->AddElement(Ar, fractionmass=90.*perCent);
Ar_CF4_90_10->GetIonisation()->SetMeanExcitationEnergy(25.0*eV); Ar_CF4_90_10->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
G4Material* Ar_iso_97_3 = G4Material* Ar_iso_97_3 =
new G4Material("Ar_iso_97_3", density= 0.0016838*g/cm3, ncomponents=2); new G4Material("Ar_iso_97_3", density= 0.0016838*g/cm3, ncomponents=2);
Ar_iso_97_3->AddMaterial(iso, fractionmass=3.*perCent); Ar_iso_97_3->AddMaterial(iso, fractionmass=3.*perCent);
Ar_iso_97_3->AddElement(Ar, fractionmass=97.*perCent); Ar_iso_97_3->AddElement(Ar, fractionmass=97.*perCent);
Ar_iso_97_3->GetIonisation()->SetMeanExcitationEnergy(25.0*eV); Ar_iso_97_3->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
G4Material* Ar_iso_95_5 = G4Material* Ar_iso_95_5 =
new G4Material("Ar_iso_95_5", density= 0.0016990*g/cm3, ncomponents=2); new G4Material("Ar_iso_95_5", density= 0.0016990*g/cm3, ncomponents=2);
Ar_iso_95_5->AddMaterial(iso, fractionmass=5.*perCent); Ar_iso_95_5->AddMaterial(iso, fractionmass=5.*perCent);
Ar_iso_95_5->AddElement(Ar, fractionmass=95.*perCent); Ar_iso_95_5->AddElement(Ar, fractionmass=95.*perCent);
Ar_iso_95_5->GetIonisation()->SetMeanExcitationEnergy(25.0*eV); Ar_iso_95_5->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
G4Material* LH2 = G4Material* LH2 =
new G4Material("LH2", density= 0.0715*g/cm3, ncomponents=1); new G4Material("LH2", density= 0.0715*g/cm3, ncomponents=1);
LH2->AddElement(H, natoms=2); LH2->AddElement(H, natoms=2);
G4Material* Myl = G4Material* Myl =
new G4Material("Mylar", density= 1.397*g/cm3, ncomponents=3); new G4Material("Mylar", density= 1.397*g/cm3, ncomponents=3);
Myl->AddElement(C, natoms=10); Myl->AddElement(C, natoms=10);
...@@ -213,45 +231,45 @@ void Minos::DefineMaterials() ...@@ -213,45 +231,45 @@ void Minos::DefineMaterials()
Epo->AddElement(C, natoms=18); Epo->AddElement(C, natoms=18);
Epo->AddElement(H, natoms= 20); Epo->AddElement(H, natoms= 20);
Epo->AddElement(O, natoms= 3); Epo->AddElement(O, natoms= 3);
G4Material* Air = G4Material* Air =
new G4Material("Air" , density= 1.290*mg/cm3, ncomponents=3); new G4Material("Air" , density= 1.290*mg/cm3, ncomponents=3);
Air->AddElement(N, fractionmass=0.781); Air->AddElement(N, fractionmass=0.781);
Air->AddElement(O, fractionmass=0.21); Air->AddElement(O, fractionmass=0.21);
Air->AddElement(Ar, fractionmass=0.009); Air->AddElement(Ar, fractionmass=0.009);
G4Material* Vacuum = G4Material* Vacuum =
new G4Material("Galactic", z=1., a=1.01*g/mole,density= universe_mean_density, new G4Material("Galactic", z=1., a=1.01*g/mole,density= universe_mean_density,
kStateGas, 2.73*kelvin, 3.e-18*pascal); kStateGas, 2.73*kelvin, 3.e-18*pascal);
G4Material* beam = G4Material* beam =
new G4Material("Beam", density= 1.e-5*g/cm3, ncomponents=1, new G4Material("Beam", density= 1.e-5*g/cm3, ncomponents=1,
kStateGas, STP_Temperature, 2.e-2*bar); kStateGas, STP_Temperature, 2.e-2*bar);
beam->AddMaterial(Air, fractionmass=1.); beam->AddMaterial(Air, fractionmass=1.);
G4Material* Inox = G4Material* Inox =
new G4Material("Inox", density= 8.02*g/cm3, ncomponents=3); new G4Material("Inox", density= 8.02*g/cm3, ncomponents=3);
Inox->AddElement(C, fractionmass=0.001); Inox->AddElement(C, fractionmass=0.001);
Inox->AddElement(Fe, fractionmass=0.829); Inox->AddElement(Fe, fractionmass=0.829);
Inox->AddElement(Cr, fractionmass=0.17); Inox->AddElement(Cr, fractionmass=0.17);
G4Material* Kapton = G4Material* Kapton =
new G4Material("Kapton", density= 1.42*g/cm3, ncomponents=4); new G4Material("Kapton", density= 1.42*g/cm3, ncomponents=4);
Kapton->AddElement(C, fractionmass=0.691133); Kapton->AddElement(C, fractionmass=0.691133);
Kapton->AddElement(H, fractionmass=0.026362); Kapton->AddElement(H, fractionmass=0.026362);
Kapton->AddElement(O, fractionmass=0.209235); Kapton->AddElement(O, fractionmass=0.209235);
Kapton->AddElement(N, fractionmass=0.073270); Kapton->AddElement(N, fractionmass=0.073270);
G4Material* Rohacell = G4Material* Rohacell =
new G4Material("Rohacell", density= 0.075*g/cm3, ncomponents=4); new G4Material("Rohacell", density= 0.075*g/cm3, ncomponents=4);
Rohacell->AddElement(C, fractionmass=0.6014); Rohacell->AddElement(C, fractionmass=0.6014);
Rohacell->AddElement(H, fractionmass=0.0805); Rohacell->AddElement(H, fractionmass=0.0805);
Rohacell->AddElement(O, fractionmass=0.3154); Rohacell->AddElement(O, fractionmass=0.3154);
Rohacell->AddElement(N, fractionmass=0.00276); Rohacell->AddElement(N, fractionmass=0.00276);
//G4cout << *(G4Material::GetMaterialTable()) << G4endl; //G4cout << *(G4Material::GetMaterialTable()) << G4endl;
//default materials of the World //default materials of the World
defaultMaterial = Vacuum; defaultMaterial = Vacuum;
} }
...@@ -306,16 +324,16 @@ void Minos::SetKaptonMaterial(G4String materialChoice) ...@@ -306,16 +324,16 @@ void Minos::SetKaptonMaterial(G4String materialChoice)
G4LogicalVolume* Minos::BuildCylindricalDetector(){ G4LogicalVolume* Minos::BuildCylindricalDetector(){
if(!m_CylindricalDetector){ if(!m_CylindricalDetector){
/* /*
G4Tubs* tub = new G4Tubs("Minos_Cyl",0,Minos_NS::Radius,Minos_NS::Thickness*0.5,0,360*deg); G4Tubs* tub = new G4Tubs("Minos_Cyl",0,Minos_NS::Radius,Minos_NS::Thickness*0.5,0,360*deg);
G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Minos_NS::Material); G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Minos_NS::Material);
m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Minos_tub",0,0,0); m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Minos_tub",0,0,0);
m_CylindricalDetector->SetVisAttributes(m_VisSquare); m_CylindricalDetector->SetVisAttributes(m_VisSquare);
m_CylindricalDetector->SetSensitiveDetector(m_MinosScorer); m_CylindricalDetector->SetSensitiveDetector(m_MinosScorer);
*/ */
} }
return m_CylindricalDetector; return m_CylindricalDetector;
} }
...@@ -325,8 +343,8 @@ G4LogicalVolume* Minos::BuildCylindricalDetector(){ ...@@ -325,8 +343,8 @@ G4LogicalVolume* Minos::BuildCylindricalDetector(){
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Below are vis attributes that permits someone to test / play // Below are vis attributes that permits someone to test / play
// with the interactive expansion / contraction geometry system of the // with the interactive expansion / contraction geometry system of the
// vis/OpenInventor driver : // vis/OpenInventor driver :
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildTarget(){ G4LogicalVolume* Minos::BuildTarget(){
...@@ -337,58 +355,58 @@ G4LogicalVolume* Minos::BuildTarget(){ ...@@ -337,58 +355,58 @@ G4LogicalVolume* Minos::BuildTarget(){
solidTarget=0; logicTarget=0; /*physiTarget=0;*/ solidTarget=0; logicTarget=0; /*physiTarget=0;*/
solidChamber=0; logicChamber=0; /*physiChamber=0;*/ solidChamber=0; logicChamber=0; /*physiChamber=0;*/
solidTPC=0; logicTPC=0; /*physiTPC=0;*/ solidTPC=0; logicTPC=0; /*physiTPC=0;*/
solidTarget = new G4Tubs("Target", //its name solidTarget = new G4Tubs("Target", //its name
0.,TargetRadius,TargetLength,0,360.);//size 0.,TargetRadius,TargetLength,0,360.);//size
logicTarget = new G4LogicalVolume(solidTarget, //its solid logicTarget = new G4LogicalVolume(solidTarget, //its solid
TargetMaterial, //its material TargetMaterial, //its material
"Target"); //its name "Target"); //its name
{G4VisAttributes* atb= new G4VisAttributes(G4Colour(0.6,1.,1.)); {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0.6,1.,1.));
atb->SetForceSolid(true); atb->SetForceSolid(true);
logicTarget->SetVisAttributes(atb);} logicTarget->SetVisAttributes(atb);}
logicTarget->SetSensitiveDetector(m_MinosTargetScorer); logicTarget->SetSensitiveDetector(m_MinosTargetScorer);
} }
return logicTarget; return logicTarget;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildChamber(){ G4LogicalVolume* Minos::BuildChamber(){
if(!logicChamber){ if(!logicChamber){
// //
// Chamber // Chamber
// //
solidChamber = new G4Tubs("Chamber", //its name solidChamber = new G4Tubs("Chamber", //its name
ChamberInnerRadius,ChamberInnerRadius+ChamberThickness,ChamberLength,0,360.); //size ChamberInnerRadius,ChamberInnerRadius+ChamberThickness,ChamberLength,0,360.); //size
logicChamber = new G4LogicalVolume(solidChamber, //its solid logicChamber = new G4LogicalVolume(solidChamber, //its solid
ChamberMaterial, //its material ChamberMaterial, //its material
"Chamber"); //its name "Chamber"); //its name
{G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(0,1,0)); {G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(0,1,0));
simpleBoxVisAtt->SetVisibility(true); simpleBoxVisAtt->SetVisibility(true);
logicChamber->SetVisAttributes(simpleBoxVisAtt);} logicChamber->SetVisAttributes(simpleBoxVisAtt);}
} }
return logicChamber; return logicChamber;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildInnerRohacell(){ G4LogicalVolume* Minos::BuildInnerRohacell(){
if(!logicInnerRohacell){ if(!logicInnerRohacell){
// //
// Inner Rohacell // Inner Rohacell
// //
solidInnerRohacell = new G4Tubs("InnerRohacell", //its name solidInnerRohacell = new G4Tubs("InnerRohacell", //its name
ChamberInnerRadius /*+ ChamberThickness*/,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness,ChamberLength,0,360.); //size ChamberInnerRadius /*+ ChamberThickness*/,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness,ChamberLength,0,360.); //size
logicInnerRohacell = new G4LogicalVolume(solidInnerRohacell, //its solid logicInnerRohacell = new G4LogicalVolume(solidInnerRohacell, //its solid
InnerRohacellMaterial, //its material InnerRohacellMaterial, //its material
"InnerRohacell"); //its name "InnerRohacell"); //its name
} }
...@@ -397,15 +415,15 @@ G4LogicalVolume* Minos::BuildInnerRohacell(){ ...@@ -397,15 +415,15 @@ G4LogicalVolume* Minos::BuildInnerRohacell(){
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildOuterRohacell(){ G4LogicalVolume* Minos::BuildOuterRohacell(){
if(!logicOuterRohacell){ if(!logicOuterRohacell){
// //
// Outer Rohacell // Outer Rohacell
// //
solidOuterRohacell = new G4Tubs("OuterRohacell", //its name solidOuterRohacell = new G4Tubs("OuterRohacell", //its name
ChamberInnerRadius /*+ ChamberThickness + InnerRohacellThickness + KaptonThickness*/,ChamberInnerRadius + ChamberThickness + InnerRohacellThickness + KaptonThickness+OuterRohacellThickness,ChamberLength,0,360.); //size ChamberInnerRadius /*+ ChamberThickness + InnerRohacellThickness + KaptonThickness*/,ChamberInnerRadius + ChamberThickness + InnerRohacellThickness + KaptonThickness+OuterRohacellThickness,ChamberLength,0,360.); //size
logicOuterRohacell = new G4LogicalVolume(solidOuterRohacell, //its solid logicOuterRohacell = new G4LogicalVolume(solidOuterRohacell, //its solid
OuterRohacellMaterial, //its material OuterRohacellMaterial, //its material
"OuterRohacell"); //its name "OuterRohacell"); //its name
} }
return logicOuterRohacell; return logicOuterRohacell;
} }
...@@ -413,94 +431,94 @@ G4LogicalVolume* Minos::BuildOuterRohacell(){ ...@@ -413,94 +431,94 @@ G4LogicalVolume* Minos::BuildOuterRohacell(){
G4LogicalVolume* Minos::BuildKapton(){ G4LogicalVolume* Minos::BuildKapton(){
if(!logicKapton){ if(!logicKapton){
// //
// Kapton // Kapton
// //
solidKapton = new G4Tubs("Kapton", //its name solidKapton = new G4Tubs("Kapton", //its name
ChamberInnerRadius+ ChamberThickness +InnerRohacellThickness ,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness+KaptonThickness,ChamberLength,0,360.); //size ChamberInnerRadius+ ChamberThickness +InnerRohacellThickness ,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness+KaptonThickness,ChamberLength,0,360.); //size
logicKapton = new G4LogicalVolume(solidKapton, //its solid logicKapton = new G4LogicalVolume(solidKapton, //its solid
KaptonMaterial, //its material KaptonMaterial, //its material
"Kapton"); //its name "Kapton"); //its name
} }
return logicKapton; return logicKapton;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildTPC(){ G4LogicalVolume* Minos::BuildTPC(){
if(!logicTPC){ if(!logicTPC){
// //
// TPC // TPC
solidTPC = new G4Tubs("TPC", //its name solidTPC = new G4Tubs("TPC", //its name
ChamberInnerRadius /*+ ChamberThickness + InnerRohacellThickness + KaptonThickness + OuterRohacellThickness*/,TPCRadiusExt,ChamberLength,0,360.); ChamberInnerRadius /*+ ChamberThickness + InnerRohacellThickness + KaptonThickness + OuterRohacellThickness*/,TPCRadiusExt,ChamberLength,0,360.);
logicTPC = new G4LogicalVolume(solidTPC, //its solid logicTPC = new G4LogicalVolume(solidTPC, //its solid
TPCMaterial, //its material TPCMaterial, //its material
"TPC"); //name "TPC"); //name
{G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,0.6)); {G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,0.6));
logicTPC->SetVisAttributes(atb);} logicTPC->SetVisAttributes(atb);}
// logicTPC->SetSensitiveDetector(m_MinosTPCScorer); // logicTPC->SetSensitiveDetector(m_MinosTPCScorer);
} }
return logicTPC; return logicTPC;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// //
// windows // windows
// //
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildWindow0(){ G4LogicalVolume* Minos::BuildWindow0(){
if(!logicWindow0){ if(!logicWindow0){
solidWindow0 = new G4Tubs("WindowTube", //its name solidWindow0 = new G4Tubs("WindowTube", //its name
0./*TargetRadius*/,TargetRadius+WindowThickness*2.,TargetLength+WindowThickness*2.,0,360.); 0./*TargetRadius*/,TargetRadius+WindowThickness*2.,TargetLength+WindowThickness*2.,0,360.);
logicWindow0 = new G4LogicalVolume(solidWindow0, //its solid logicWindow0 = new G4LogicalVolume(solidWindow0, //its solid
WindowMaterial, //its material WindowMaterial, //its material
"WindowTube"); //name "WindowTube"); //name
{G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1)); {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1));
atb->SetForceSolid(true); atb->SetForceSolid(true);
logicWindow0->SetVisAttributes(atb);} logicWindow0->SetVisAttributes(atb);}
} }
return logicWindow0; return logicWindow0;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildWindow1(){ G4LogicalVolume* Minos::BuildWindow1(){
if(!logicWindow1){ if(!logicWindow1){
solidWindow1 = new G4Tubs("WindowEntrance", //its name solidWindow1 = new G4Tubs("WindowEntrance", //its name
0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.); 0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.);
logicWindow1 = new G4LogicalVolume(solidWindow1, //its solid logicWindow1 = new G4LogicalVolume(solidWindow1, //its solid
WindowMaterial, //its material WindowMaterial, //its material
"WindowEntrance"); //name "WindowEntrance"); //name
{G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1)); {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1));
atb->SetForceSolid(true); atb->SetForceSolid(true);
logicWindow1->SetVisAttributes(atb);} logicWindow1->SetVisAttributes(atb);}
} }
return logicWindow1; return logicWindow1;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4LogicalVolume* Minos::BuildWindow2(){ G4LogicalVolume* Minos::BuildWindow2(){
if(!logicWindow2){ if(!logicWindow2){
solidWindow2 = new G4Tubs("WindowOutcoming", //its name solidWindow2 = new G4Tubs("WindowOutcoming", //its name
0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.); 0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.);
logicWindow2 = new G4LogicalVolume(solidWindow2, //its solid logicWindow2 = new G4LogicalVolume(solidWindow2, //its solid
WindowMaterial, //its material WindowMaterial, //its material
"WindowOutcoming"); //name "WindowOutcoming"); //name
{G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1)); {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1));
atb->SetForceSolid(true); atb->SetForceSolid(true);
logicWindow2->SetVisAttributes(atb);} logicWindow2->SetVisAttributes(atb);}
} }
return logicWindow2; return logicWindow2;
} }
...@@ -522,7 +540,7 @@ void Minos::ReadConfiguration(NPL::InputParser parser){ ...@@ -522,7 +540,7 @@ void Minos::ReadConfiguration(NPL::InputParser parser){
if(blocks[i]->HasTokenList(cart)){ if(blocks[i]->HasTokenList(cart)){
if(NPOptionManager::getInstance()->GetVerboseLevel()) if(NPOptionManager::getInstance()->GetVerboseLevel())
cout << endl << "//// Minos " << i+1 << endl; cout << endl << "//// Minos " << i+1 << endl;
G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm")); G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
string Shape = blocks[i]->GetString("Shape"); string Shape = blocks[i]->GetString("Shape");
AddDetector(Pos,Shape); AddDetector(Pos,Shape);
...@@ -550,13 +568,12 @@ void Minos::ReadConfiguration(NPL::InputParser parser){ ...@@ -550,13 +568,12 @@ void Minos::ReadConfiguration(NPL::InputParser parser){
// Called After DetecorConstruction::AddDetector Method // Called After DetecorConstruction::AddDetector Method
void Minos::ConstructDetector(G4LogicalVolume* world){ void Minos::ConstructDetector(G4LogicalVolume* world){
for (unsigned short i = 0 ; i < m_R.size() ; i++) { for (unsigned short i = 0 ; i < m_R.size() ; i++) {
TargetRadius = 28.*mm; TargetLength = 150./2.*mm;
ChamberInnerRadius = 37.*mm; ChamberThickness = 1.*mm;
ChamberLength = 300./2.*mm;
InnerRohacellThickness = 1.*mm; KaptonThickness = 0.125*mm; OuterRohacellThickness = 2.*mm;
TPCRadiusExt = 100.*mm; WindowThickness = 0.150/2.*mm;
TargetRadius = 28.*mm; TargetLength = 150./2.*mm;
ChamberInnerRadius = 37.*mm; ChamberThickness = 1.*mm;
ChamberLength = 300./2.*mm;
InnerRohacellThickness = 1.*mm; KaptonThickness = 0.125*mm; OuterRohacellThickness = 2.*mm;
TPCRadiusExt = 100.*mm; WindowThickness = 0.150/2.*mm;
DefineMaterials(); DefineMaterials();
SetTargetMaterial("LH2"); SetTargetMaterial("LH2");
...@@ -566,13 +583,13 @@ void Minos::ConstructDetector(G4LogicalVolume* world){ ...@@ -566,13 +583,13 @@ void Minos::ConstructDetector(G4LogicalVolume* world){
SetKaptonMaterial("Kapton"); SetKaptonMaterial("Kapton");
SetInnerRohacellMaterial("Rohacell"); SetInnerRohacellMaterial("Rohacell");
SetOuterRohacellMaterial("Rohacell"); SetOuterRohacellMaterial("Rohacell");
G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ; G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ;
G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ; G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ;
G4double wZ = m_R[i] * cos(m_Theta[i] ) ; G4double wZ = m_R[i] * cos(m_Theta[i] ) ;
G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ; G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
// So the face of the detector is at R instead of the middle // So the face of the detector is at R instead of the middle
Det_pos+=Det_pos.unit()*Minos_NS::Thickness*0.5; Det_pos+=Det_pos.unit()*Minos_NS::Thickness*0.5;
// Building Detector reference frame // Building Detector reference frame
G4double ii = cos(m_Theta[i]) * cos(m_Phi[i]); G4double ii = cos(m_Theta[i]) * cos(m_Phi[i]);
G4double jj = cos(m_Theta[i]) * sin(m_Phi[i]); G4double jj = cos(m_Theta[i]) * sin(m_Phi[i]);
...@@ -592,101 +609,103 @@ void Minos::ConstructDetector(G4LogicalVolume* world){ ...@@ -592,101 +609,103 @@ void Minos::ConstructDetector(G4LogicalVolume* world){
// // "Minos",world,false,i+1); // // "Minos",world,false,i+1);
// } // }
// else if(m_Shape[i] == "Square"){ // else if(m_Shape[i] == "Square"){
// } // }
new G4PVPlacement(0,//its name new G4PVPlacement(0,//its name
G4ThreeVector(wX,wY, wZ/* ChamberLength*/), //at (0,0,0) G4ThreeVector(wX,wY, wZ/* ChamberLength*/), //at (0,0,0)
BuildTPC(), //its logical volume BuildTPC(), //its logical volume
"TPC", //its name "TPC", //its name
world, //its mother volume world, //its mother volume
false, //no boolean operation false, //no boolean operation
0); //copy number 0); //copy number
new G4PVPlacement(0, //its name new G4PVPlacement(0, //its name
G4ThreeVector(0,0,0/*ChamberLength*/), //at (0,0,0) G4ThreeVector(0,0,0/*ChamberLength*/), //at (0,0,0)
BuildOuterRohacell(), //its logical volume BuildOuterRohacell(), //its logical volume
"Rohacell"/*"OuterRohacell"*/, //its name "Rohacell"/*"OuterRohacell"*/, //its name
logicTPC/*world*/, //its mother volume logicTPC/*world*/, //its mother volume
false, //no boolean operation false, //no boolean operation
0); //copy number 0); //copy number
new G4PVPlacement(0,//its name new G4PVPlacement(0,//its name
G4ThreeVector(0,0,0/*ChamberLength*/), //at (0,0,0) G4ThreeVector(0,0,0/*ChamberLength*/), //at (0,0,0)
BuildChamber(), //its logical volume BuildChamber(), //its logical volume
"Chamber", //its name "Chamber", //its name
logicOuterRohacell, //its mother volume logicOuterRohacell, //its mother volume
false, //no boolean operation false, //no boolean operation
0); //copy number 0); //copy number
/*new G4PVPlacement(0, //its name /*new G4PVPlacement(0, //its name
G4ThreeVector(0,0,ChamberLength), //at (0,0,0) G4ThreeVector(0,0,ChamberLength), //at (0,0,0)
BuildInnerRohacell(), //its logical volume BuildInnerRohacell(), //its logical volume
"InnerRohacell", //its name "InnerRohacell", //its name
world, //its mother volume world, //its mother volume
false, //no boolean operation false, //no boolean operation
0);*/ 0);*/
new G4PVPlacement(0, //its name
G4ThreeVector(0,0,0/*ChamberLength*/), //at (0,0,0)
BuildKapton(), //its logical volume
"Kapton", //its name
logicOuterRohacell, //its mother volume
false, //no boolean operation
0); //copy number
new G4PVPlacement(0, //its name new G4PVPlacement(0, //its name
G4ThreeVector(wX,wY, wZ-1.*TargetLength+10*mm), //at (0,0,0) G4ThreeVector(0,0,0/*ChamberLength*/), //at (0,0,0)
BuildWindow0(), //its logical volume BuildKapton(), //its logical volume
"WindowTube", //its name "Kapton", //its name
world, //its mother volume logicOuterRohacell, //its mother volume
false, //no boolean operation false, //no boolean operation
0); 0); //copy number
new G4PVPlacement(0, //its name
G4ThreeVector(wX,wY, wZ-1.*TargetLength+10*mm), //at (0,0,0)
BuildWindow0(), //its logical volume
"WindowTube", //its name
world, //its mother volume
false, //no boolean operation
0);
/*new G4PVPlacement(0, //its name /*new G4PVPlacement(0, //its name
G4ThreeVector(0,0, -1.*(TargetLength+WindowThickness)), //at (0,0,0) G4ThreeVector(0,0, -1.*(TargetLength+WindowThickness)), //at (0,0,0)
BuildWindow1(), //its logical volume BuildWindow1(), //its logical volume
"WindowEntrance", //its name "WindowEntrance", //its name
logicWindow0, //its mother volume logicWindow0, //its mother volume
false, //no boolean operation false, //no boolean operation
0); new G4PVPlacement(0, //its name 0); new G4PVPlacement(0, //its name
G4ThreeVector(0,0, (TargetLength+WindowThickness)), //at (0,0,0) G4ThreeVector(0,0, (TargetLength+WindowThickness)), //at (0,0,0)
BuildWindow2(), //its logical volume BuildWindow2(), //its logical volume
"WindowOutcoming", //its name "WindowOutcoming", //its name
logicWindow0, //its mother volume logicWindow0, //its mother volume
false, //no boolean operation false, //no boolean operation
0); //copy number 0); //copy number
*/ */
new G4PVPlacement(0,//no rotation new G4PVPlacement(0,//no rotation
G4ThreeVector(0,0,0/*TargetLength*/), //at (0,0,0) G4ThreeVector(0,0,0/*TargetLength*/), //at (0,0,0)
BuildTarget(), //its logical volume BuildTarget(), //its logical volume
"Target", //its name "Target", //its name
logicWindow0, //its mother volume logicWindow0, //its mother volume
false, //no boolean operation false, //no boolean operation
0); //copy number 0); //copy number
// G4ProductionCuts* ecut = new G4ProductionCuts(); // G4ProductionCuts* ecut = new G4ProductionCuts();
//G4ProductionCuts* pcut = new G4ProductionCuts(); //G4ProductionCuts* pcut = new G4ProductionCuts();
if(!m_ReactionRegion){ if(!m_ReactionRegion){
// ecut->SetProductionCut(1000,"e-"); // ecut->SetProductionCut(1000,"e-");
// pcut->SetProductionCut(1,"p"); // pcut->SetProductionCut(1,"p");
m_ReactionRegion= new G4Region("NPSimulationProcess"); m_ReactionRegion= new G4Region("NPSimulationProcess");
m_ReactionRegion -> AddRootLogicalVolume(logicTarget); m_ReactionRegion -> AddRootLogicalVolume(logicTarget);
// logicTPC -> SetRegion(m_ReactionRegion); // logicTPC -> SetRegion(m_ReactionRegion);
//m_ReactionRegion->SetProductionCuts(ecut); //m_ReactionRegion->SetProductionCuts(ecut);
//m_ReactionRegion->SetProductionCuts(ecut); //m_ReactionRegion->SetProductionCuts(ecut);
// m_ReactionRegion -> AddRootLogicalVolume(logicTPC); // m_ReactionRegion -> AddRootLogicalVolume(logicTPC);
m_ReactionRegion->SetUserLimits(new G4UserLimits(1.2*mm)); //??? m_ReactionRegion->SetUserLimits(new G4UserLimits(1.2*mm)); //???
} }
G4FastSimulationManager* mng = m_ReactionRegion->GetFastSimulationManager(); G4FastSimulationManager* mng = m_ReactionRegion->GetFastSimulationManager();
unsigned int size = m_ReactionModel.size(); unsigned int size = m_ReactionModel.size();
for(unsigned int o = 0 ; o < size ; o++){ for(unsigned int o = 0 ; o < size ; o++){
...@@ -699,19 +718,19 @@ void Minos::ConstructDetector(G4LogicalVolume* world){ ...@@ -699,19 +718,19 @@ void Minos::ConstructDetector(G4LogicalVolume* world){
m_ReactionModel.push_back(fsm); m_ReactionModel.push_back(fsm);
fsm = new NPS::Decay("Decay",m_ReactionRegion); fsm = new NPS::Decay("Decay",m_ReactionRegion);
m_ReactionModel.push_back(fsm); m_ReactionModel.push_back(fsm);
// G4Region* Region_cut = new G4Region("RegionCut"); // G4Region* Region_cut = new G4Region("RegionCut");
// logicTPC->SetRegion(Region_cut); // logicTPC->SetRegion(Region_cut);
// Region_cut->SetProductionCuts(ecut); // Region_cut->SetProductionCuts(ecut);
// Region_cut->SetProductionCuts(pcut); // Region_cut->SetProductionCuts(pcut);
// Region_cut->AddRootLogicalVolume(logicTPC); // Region_cut->AddRootLogicalVolume(logicTPC);
} }
// //
// Visualization attributes // Visualization attributes
// //
world->SetVisAttributes (G4VisAttributes::Invisible); world->SetVisAttributes (G4VisAttributes::Invisible);
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Add Detector branch to the EventTree. // Add Detector branch to the EventTree.
...@@ -735,7 +754,7 @@ void Minos::ReadSensitive(const G4Event* ){ ...@@ -735,7 +754,7 @@ void Minos::ReadSensitive(const G4Event* ){
// Calorimeter scorer // Calorimeter scorer
CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_MinosTargetScorer->GetPrimitive(0); CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_MinosTargetScorer->GetPrimitive(0);
unsigned int size = Scorer->GetMult(); unsigned int size = Scorer->GetMult();
for(unsigned int i = 0 ; i < size ; i++){ for(unsigned int i = 0 ; i < size ; i++){
vector<unsigned int> level = Scorer->GetLevel(i); vector<unsigned int> level = Scorer->GetLevel(i);
...@@ -771,7 +790,7 @@ void Minos::InitializeScorers() { ...@@ -771,7 +790,7 @@ void Minos::InitializeScorers() {
G4VPrimitiveScorer* TPCScorer= new TPCScorers::PS_TPCCathode("MinosTPC", 0); G4VPrimitiveScorer* TPCScorer= new TPCScorers::PS_TPCCathode("MinosTPC", 0);
m_MinosTPCScorer->RegisterPrimitive(TPCScorer); m_MinosTPCScorer->RegisterPrimitive(TPCScorer);
G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosTPCScorer) ; G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosTPCScorer) ;
G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosTargetScorer) ; G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosTargetScorer) ;
} }
......
...@@ -58,13 +58,13 @@ PS_Calorimeter::~PS_Calorimeter(){ ...@@ -58,13 +58,13 @@ PS_Calorimeter::~PS_Calorimeter(){
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){ G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){
// Contain Energy, Time + as many copy number as nested volume // Contain Energy, Time + as many copy number as nested volume
static unsigned int mysize = m_NestingLevel.size(); unsigned int mysize = m_NestingLevel.size();
t_Energy = aStep->GetTotalEnergyDeposit(); t_Energy = aStep->GetTotalEnergyDeposit();
t_Time = aStep->GetPreStepPoint()->GetGlobalTime(); t_Time = aStep->GetPreStepPoint()->GetGlobalTime();
t_Level.clear(); t_Level.clear();
for(unsigned int i = 0 ; i < mysize ; i++){ for(unsigned int i = 0 ; i < mysize ; i++){
t_Level.push_back(aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i])); t_Level.push_back(aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]));
} }
// Check if the particle has interact before, if yes, add up the energies. // Check if the particle has interact before, if yes, add up the energies.
vector<CalorimeterData>::iterator it; vector<CalorimeterData>::iterator it;
it = m_Data.find(CalorimeterData::CalculateIndex(t_Level)); it = m_Data.find(CalorimeterData::CalculateIndex(t_Level));
......
...@@ -6,44 +6,44 @@ Minos ...@@ -6,44 +6,44 @@ Minos
Shape= Cylindrical Shape= Cylindrical
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = -60 Alpha = -60 deg
Zeta = 90.03 Zeta = 90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 0 Alpha = 0 deg
Zeta = 90.03 Zeta = 90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 60 Alpha = 60 deg
Zeta = 90.03 Zeta = 90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 120 Alpha = 120 deg
Zeta = 90.03 Zeta = 90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 180 Alpha = 180 deg
Zeta = 90.03 Zeta = 90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 240 Alpha = 240 deg
Zeta = 90.03 Zeta = 90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
...@@ -51,44 +51,44 @@ Dali ...@@ -51,44 +51,44 @@ Dali
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = -60 Alpha = -60 deg
Zeta = -90.03 Zeta = -90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 0 Alpha = 0 deg
Zeta = -90.03 Zeta = -90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 60 Alpha = 60 deg
Zeta = -90.03 Zeta = -90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 120 Alpha = 120 deg
Zeta = -90.03 Zeta = -90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 180 Alpha = 180 deg
Zeta = -90.03 Zeta = -90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dali Dali
R = 210 R = 210 mm
Alpha = 240 Alpha = 240 deg
Zeta = -90.03 Zeta = -90.03 mm
Shape = Square Shape = Square
Material = NaI(Tl) Material = NaI(Tl)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
...@@ -2,19 +2,19 @@ ...@@ -2,19 +2,19 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Beam Beam
Particle= 1H Particle= 1H
ExcitationEnergy= 0 ExcitationEnergy= 0 MeV
Energy= 170 Energy= 170 MeV
SigmaEnergy= 0.448 SigmaEnergy= 0.448 MeV
SigmaThetaX= 0.01 SigmaThetaX= 0.01 deg
SigmaPhiY= 0.01 SigmaPhiY= 0.01 deg
SigmaX= 0.01 SigmaX= 0.01 mm
%0.5 %0.5
SigmaY= 0.01 SigmaY= 0.01 mm
%0.5 %0.5
MeanThetaX= 0 MeanThetaX= 0 deg
MeanPhiY= 0 MeanPhiY= 0 deg
MeanX= 0 MeanX= 0 mm
MeanY= 0 MeanY= 0 mm
%EnergyProfilePath= %EnergyProfilePath=
%XThetaXProfilePath= %XThetaXProfilePath=
%YPhiYProfilePath= %YPhiYProfilePath=
...@@ -24,8 +24,8 @@ TwoBodyReaction ...@@ -24,8 +24,8 @@ TwoBodyReaction
Target= 12C Target= 12C
Light= 12C Light= 12C
Heavy= 1H Heavy= 1H
ExcitationEnergyLight= 0.0 ExcitationEnergyLight= 0.0 MeV
ExcitationEnergyHeavy= 0.0 ExcitationEnergyHeavy= 0.0 MeV
CrossSectionPath= flat.txt CSR CrossSectionPath= flat.txt CSR
ShootLight= 1 ShootLight= 1
ShootHeavy= 1 ShootHeavy= 1
......
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