diff --git a/NPLib/Detectors/PISTA/TTimeData.cxx b/NPLib/Detectors/PISTA/TTimeData.cxx index 0ceb7608ec545e1859a83bdfe4d90b062644b272..cb8713f660e51856e867ed046a518bcc9d047484 100644 --- a/NPLib/Detectors/PISTA/TTimeData.cxx +++ b/NPLib/Detectors/PISTA/TTimeData.cxx @@ -53,6 +53,10 @@ void TTimeData::Clear() { fTime_MWPC14.clear(); fTime_MWPC23.clear(); fTime_MWPC24.clear(); + + fSection_MWPC3.clear(); + fSection_MWPC4.clear(); + } diff --git a/NPLib/Detectors/PISTA/TTimeData.h b/NPLib/Detectors/PISTA/TTimeData.h index 2d036067cba9fca09e7d971c3933f5f42d82ddb9..d56982141903c3cad350f77b0d3193f5f893f3dd 100644 --- a/NPLib/Detectors/PISTA/TTimeData.h +++ b/NPLib/Detectors/PISTA/TTimeData.h @@ -44,6 +44,8 @@ class TTimeData : public TObject { vector<float> fTime_MWPC23; vector<float> fTime_MWPC24; + vector<short> fSection_MWPC3; + vector<short> fSection_MWPC4; @@ -80,6 +82,10 @@ class TTimeData : public TObject { inline void SetTime_MWPC23(float time ){fTime_MWPC23.push_back(time);};//! inline void SetTime_MWPC24(float time ){fTime_MWPC24.push_back(time);};//! + inline void SetSection_MWPC3(short section ){fSection_MWPC3.push_back(section);};//! + inline void SetSection_MWPC4(short section ){fSection_MWPC4.push_back(section);};//! + + ////////////////////// GETTERS //////////////////////// @@ -100,7 +106,12 @@ class TTimeData : public TObject { {return fTime_MWPC23.at(i) ;}//! inline float GetTime_MWPC24(const unsigned int &i) const {return fTime_MWPC24.at(i) ;}//! - + + inline short GetSection_MWPC3(const unsigned int &i) const + {return fSection_MWPC3.at(i) ;}//! + inline short GetSection_MWPC4(const unsigned int &i) const + {return fSection_MWPC4.at(i) ;}//! + inline Int_t GetMWPC13Mult() const {return static_cast<int>(fTime_MWPC13.size());} inline Int_t GetMWPC14Mult() const @@ -112,7 +123,7 @@ class TTimeData : public TObject { ////////////////////////////////////////////////////////////// // Required for ROOT dictionnary - ClassDef(TTimeData,1) // TimeData structure + ClassDef(TTimeData,2) // TimeData structure }; #endif diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx index 6f890404c9fc15904a6392a296bfb55d3b1d29b6..70f0206a18977458ea78d3ab9b19720b27a215f4 100644 --- a/NPLib/Physics/NPReaction.cxx +++ b/NPLib/Physics/NPReaction.cxx @@ -639,10 +639,10 @@ void Reaction::initializePrecomputeVariable() { } //////////////////////////////////////////////////////////////////////////////////////////// -void Reaction::SetParticle3(double EnergyLab, double ThetaLab) { +void Reaction::SetParticle3(double EnergyLab, double ThetaLab, double PhiLab) { double p3 = sqrt(pow(EnergyLab, 2) + 2 * m3 * EnergyLab); - fEnergyImpulsionLab_3 = TLorentzVector(p3 * sin(ThetaLab), 0, p3 * cos(ThetaLab), EnergyLab + m3); + fEnergyImpulsionLab_3 = TLorentzVector(p3 * sin(ThetaLab) * cos(PhiLab), p3 * sin(ThetaLab) * sin(PhiLab), p3 * cos(ThetaLab), EnergyLab + m3); fEnergyImpulsionLab_4 = fTotalEnergyImpulsionLab - fEnergyImpulsionLab_3; fParticle3.SetEnergyImpulsion(fEnergyImpulsionLab_3); diff --git a/NPLib/Physics/NPReaction.h b/NPLib/Physics/NPReaction.h index 52037c6d0e4a14d28b8359d4b1b982be482688e5..fa43b2c6a3046a13d08c9d3554deaa5953965ce3 100644 --- a/NPLib/Physics/NPReaction.h +++ b/NPLib/Physics/NPReaction.h @@ -262,7 +262,7 @@ namespace NPL { // Check whenever the reaction is allowed at the given energy bool IsAllowed(double Energy); - void SetParticle3(double EnergyLab, double ThetaLab); + void SetParticle3(double EnergyLab, double ThetaLab, double PhiLab = 0); void SetParticle1(Beam p) { fParticle1 = p; }; void SetParticle2(Particle p) { fParticle2 = p; }; diff --git a/NPSimulation/Detectors/PISTA/PISTA.cc b/NPSimulation/Detectors/PISTA/PISTA.cc index 462352433a3b06907ccf06ca0755d23f3dcb879d..f7ebec47fb36d9d4b1be5a229764f7222313a1d4 100644 --- a/NPSimulation/Detectors/PISTA/PISTA.cc +++ b/NPSimulation/Detectors/PISTA/PISTA.cc @@ -64,26 +64,26 @@ namespace PISTA_NS{ const double E_ResoEnergy = 0.018*MeV ; // Trapezoid dimension PISTA1 - //const double TrapezoidBaseLarge = 72.3*mm; - //const double TrapezoidBaseSmall = 41.0*mm; - //const double TrapezoidHeight = 57.7*mm; - //const double TrapezoidLength = 1*cm; - //const double FirstStageThickness = 300*um; - //const double SecondStageThickness = 1.5*mm; - //const double DistanceBetweenSi = 4*mm; - //const double FirstStageNbrOfStrips = 91; - //const double SecondStageNbrOfStrips = 57; + double TrapezoidBaseLarge = 72.3*mm; + double TrapezoidBaseSmall = 41.0*mm; + double TrapezoidHeight = 57.7*mm; + double TrapezoidLength = 1*cm; + double FirstStageThickness = 300*um; + double SecondStageThickness = 1.5*mm; + double DistanceBetweenSi = 4*mm; + double FirstStageNbrOfStrips = 91; + double SecondStageNbrOfStrips = 57; // Trapezoid dimension PISTA2 - const double TrapezoidBaseLarge = 53*mm; - const double TrapezoidBaseSmall = 34.0*mm; - const double TrapezoidHeight = 27*mm; - const double TrapezoidLength = 1*cm; - const double FirstStageThickness = 0.3*mm; - const double SecondStageThickness = 1.5*mm; - const double DistanceBetweenSi = 3*mm; - const double FirstStageNbrOfStrips = 49; - const double SecondStageNbrOfStrips = 45; + //double TrapezoidBaseLarge = 53*mm; + //double TrapezoidBaseSmall = 34.0*mm; + //double TrapezoidHeight = 27*mm; + //double TrapezoidLength = 1*cm; + //double FirstStageThickness = 0.3*mm; + //double SecondStageThickness = 1.5*mm; + //double DistanceBetweenSi = 3*mm; + //double FirstStageNbrOfStrips = 49; + //double SecondStageNbrOfStrips = 45; } using namespace PISTA_NS; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -95,6 +95,7 @@ PISTA::PISTA(){ m_FirstStageScorer = 0; m_SecondStageScorer = 0; m_TrapezoidDetector = 0; + m_version = 1; } PISTA::~PISTA(){ @@ -111,6 +112,29 @@ void PISTA::AddDetector(G4ThreeVector A, G4ThreeVector B, G4ThreeVector C, G4Thr m_R.push_back(0); m_Theta.push_back(0); m_Phi.push_back(0); + + if(m_version==1){ + TrapezoidBaseLarge = 72.3*mm; + TrapezoidBaseSmall = 41.0*mm; + TrapezoidHeight = 57.7*mm; + TrapezoidLength = 1*cm; + FirstStageThickness = 300*um; + SecondStageThickness = 1.5*mm; + DistanceBetweenSi = 4*mm; + FirstStageNbrOfStrips = 91; + SecondStageNbrOfStrips = 57; + } + else if(m_version==2){ + TrapezoidBaseLarge = 53*mm; + TrapezoidBaseSmall = 34.0*mm; + TrapezoidHeight = 27*mm; + TrapezoidLength = 1*cm; + FirstStageThickness = 0.3*mm; + SecondStageThickness = 1.5*mm; + DistanceBetweenSi = 3*mm; + FirstStageNbrOfStrips = 49; + SecondStageNbrOfStrips = 45; + } } @@ -225,6 +249,7 @@ void PISTA::ReadConfiguration(NPL::InputParser parser){ if(NPOptionManager::getInstance()->GetVerboseLevel()) cout << endl << "//// PISTA " << i+1 << endl; + m_version = blocks[i]->GetInt("VERSION"); G4ThreeVector A = NPS::ConvertVector(blocks[i]->GetTVector3("POS_A","mm")); G4ThreeVector B = NPS::ConvertVector(blocks[i]->GetTVector3("POS_B","mm")); G4ThreeVector C = NPS::ConvertVector(blocks[i]->GetTVector3("POS_C","mm")); @@ -277,7 +302,7 @@ void PISTA::ConstructDetector(G4LogicalVolume* world){ w = w.unit(); center = (m_A[i] + m_B[i] + m_C[i] + m_D[i])/4; - + Rot = new G4RotationMatrix(u,v,w); Det_pos = w * TrapezoidLength * 0.5 + center; } @@ -343,9 +368,9 @@ void PISTA::ReadSensitive(const G4Event* ){ m_Event->SetPISTA_DE_StripTime(Time); } } - + unsigned int sizeDEBack = FirstStageScorer->GetLengthMult(); - for(unsigned int i = 0 ; i < sizeDEBack ; i++){ + for(unsigned int i = 0 ; i < sizeDEBack ; i++){ double EnergyBack = RandGauss::shoot(FirstStageScorer->GetEnergyLength(i), DE_ResoEnergy); if(EnergyBack>EnergyThreshold){ double Time = RandGauss::shoot(FirstStageScorer->GetTimeLength(i), ResoTime); @@ -356,18 +381,18 @@ void PISTA::ReadSensitive(const G4Event* ){ } } - + /*for(unsigned int i = 0 ; i < sizeDEFront ; i++){ double EnergyFront = RandGauss::shoot(FirstStageScorer->GetEnergyWidth(i), DE_ResoEnergy); double EnergyBack = RandGauss::shoot(FirstStageScorer->GetEnergyLength(i), DE_ResoEnergy); if(EnergyFront>EnergyThreshold){ - double Time = RandGauss::shoot(FirstStageScorer->GetTimeLength(i), ResoTime); - int DetNbr = FirstStageScorer->GetDetectorWidth(i); - int StripFront = 92-FirstStageScorer->GetStripWidth(i); - m_Event->SetPISTA_DE(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time); - m_Event->SetPISTA_DE_BackDetector(DetNbr); + double Time = RandGauss::shoot(FirstStageScorer->GetTimeLength(i), ResoTime); + int DetNbr = FirstStageScorer->GetDetectorWidth(i); + int StripFront = 92-FirstStageScorer->GetStripWidth(i); + m_Event->SetPISTA_DE(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time); + m_Event->SetPISTA_DE_BackDetector(DetNbr); } - }*/ + }*/ FirstStageScorer->clear(); /////////// @@ -387,7 +412,7 @@ void PISTA::ReadSensitive(const G4Event* ){ m_Event->SetPISTA_E_StripTime(Time); } } - + unsigned int sizeEBack = SecondStageScorer->GetWidthMult(); for(unsigned int i = 0 ; i < sizeEBack ; i++){ double EnergyBack = RandGauss::shoot(SecondStageScorer->GetEnergyWidth(i), E_ResoEnergy); @@ -399,20 +424,20 @@ void PISTA::ReadSensitive(const G4Event* ){ m_Event->SetPISTA_E_BackTime(Time); } } - + /*for(unsigned int i = 0 ; i < sizeEFront ; i++){ double EnergyFront = RandGauss::shoot(SecondStageScorer->GetEnergyLength(i), E_ResoEnergy); double EnergyBack = RandGauss::shoot(SecondStageScorer->GetEnergyWidth(i), E_ResoEnergy); if(EnergyFront>EnergyThreshold){ - double Time = RandGauss::shoot(SecondStageScorer->GetTimeLength(i), ResoTime); - int DetNbr = SecondStageScorer->GetDetectorLength(i); - int StripFront = SecondStageScorer->GetStripLength(i); - m_Event->SetPISTA_E(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time); - m_Event->SetPISTA_E_BackDetector(DetNbr); + double Time = RandGauss::shoot(SecondStageScorer->GetTimeLength(i), ResoTime); + int DetNbr = SecondStageScorer->GetDetectorLength(i); + int StripFront = SecondStageScorer->GetStripLength(i); + m_Event->SetPISTA_E(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time); + m_Event->SetPISTA_E_BackDetector(DetNbr); } - }*/ + }*/ SecondStageScorer->clear(); diff --git a/NPSimulation/Detectors/PISTA/PISTA.hh b/NPSimulation/Detectors/PISTA/PISTA.hh index 90548dec841c28b11394d4fafd6fbadcf2ac61a9..4ac6371879228364ade3a01f41da02a296fb327c 100644 --- a/NPSimulation/Detectors/PISTA/PISTA.hh +++ b/NPSimulation/Detectors/PISTA/PISTA.hh @@ -98,6 +98,7 @@ class PISTA : public NPS::VDetector{ //////////////////////////////////////////////////// private: // Geometry // Detector Coordinate + int m_version; vector<bool> m_DefinitionType; vector<G4ThreeVector> m_A; vector<G4ThreeVector> m_B; diff --git a/NPSimulation/Detectors/Vamos/Vamos.cc b/NPSimulation/Detectors/Vamos/Vamos.cc index 586262abd8747e0fac9e112f58ac40796e2648f7..67c2386f5cc03fbf1a8a8715e572ef1fd15c7c80 100644 --- a/NPSimulation/Detectors/Vamos/Vamos.cc +++ b/NPSimulation/Detectors/Vamos/Vamos.cc @@ -59,42 +59,52 @@ using namespace CLHEP; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... namespace Vamos_NS { - // Energy,time and position Resolution - const G4double EnergyThreshold = -10 * MeV; - const G4double ResoTime = 4.5 * ns; - const G4double ResoEnergy = 0.0001 * MeV; - const G4double ResoDriftTime = 0.0001 * ns; - const G4double ResoPosX = 0.0001 * mm; - - // Drift features - const G4double DriftSpeed = 1 * cm / microsecond; - const G4ThreeVector DriftDir = G4ThreeVector(0, 1, 0); - - // Geometry - const G4double E_DCWidth = 600 * mm; // Entrance_DriftChamber - const G4double E_DCLength = 150 * mm; - const G4double E_DCThickness = 60 * mm; - - const G4double MagnetWidth = 1000 * mm; - const G4double MagnetLenght = 150 * mm; - const G4double MagnetThickness = 200 * mm; - const G4double DipolThickness = 600 * mm; - - const G4double ChamberWidth = 1000 * mm; - const G4double ChamberLength = 150 * mm; - const G4double ChamberThickness = 120 * mm; - - // Mother Volume of Vamos - const G4double Phi = 0 * deg; - const G4double VamosVolumeWidth = 4500 * mm; - const G4double VamosVolumeLength = 1000 * mm; - const G4double VamosVolumeThickness = 5000 * mm; - - // SubVolume of detection - const G4double DetectionVolumeThickness = 1300 * mm; - const G4double DetectionVolumeWidth = 1000 * mm; - const G4double DetectionVolumeLength = 1000 * mm; - const G4double Det_Theta = 45 * deg; + // Energy,time and position Resolution + const G4double EnergyThreshold = -10 * MeV; + const G4double ResoTime = 4.5 * ns; + const G4double ResoEnergy = 0.0001 * MeV; + const G4double ResoDriftTime = 0.0001 * ns; + const G4double ResoPosX = 0.0001 * mm; + + // Drift features + const G4double DriftSpeed = 1 * cm / microsecond; + const G4ThreeVector DriftDir = G4ThreeVector(0, 1, 0); + + // Geometry + const G4double E_DCWidth = 600 * mm; // Entrance_DriftChamber + const G4double E_DCLength = 150 * mm; + const G4double E_DCThickness = 60 * mm; + + const G4double MagnetWidth = 1000 * mm; + const G4double MagnetLenght = 150 * mm; + const G4double MagnetThickness = 200 * mm; + const G4double DipolThickness = 600 * mm; + + const G4double ChamberWidth = 1000 * mm; + const G4double ChamberLength = 150 * mm; + const G4double ChamberThickness = 120 * mm; + + // Mother Volume of Vamos + const G4double Phi = 0 * deg; + const G4double VamosVolumeWidth = 4500 * mm; + const G4double VamosVolumeLength = 1000 * mm; + const G4double VamosVolumeThickness = 5000 * mm; + + // SubVolume of detection + const G4double DetectionVolumeThickness = 1300 * mm; + const G4double DetectionVolumeWidth = 1000 * mm; + const G4double DetectionVolumeLength = 1000 * mm; + const G4double Det_Theta = 45 * deg; + + // TMW1-2 + const G4double TMW1_Width = 40 * mm; + const G4double TMW1_Length = 61 * mm; + const G4double TMW1_Thickness = 5 * mm; + + const G4double TMW2_Width = 65 * mm; + const G4double TMW2_Length = 93 * mm; + const G4double TMW2_Thickness = 5 * mm; + } @@ -105,28 +115,31 @@ namespace Vamos_NS { // Vamos Specific Method Vamos::Vamos() { - m_Event = new TVamosData(); - m_CalorimeterScorer = 0; - m_DCScorer = 0; - m_Quad1 = 0; - m_Quad2 = 0; - m_Dipol = 0; - m_BeamCatcher = 0; - m_MWPPAC = 0; - m_DC3 = 0; - m_DC4 = 0; - m_DC1 = 0; - m_DC2 = 0; - - ICcounter = 0; - - // RGB Color + Transparency - m_VisQuad = new G4VisAttributes(G4Colour(1.0, 0.0, 0.0)); - m_VisVolumeVamos = new G4VisAttributes(G4Colour(1.0, 0.0, 0.0, 0.1)); - m_VisDC = new G4VisAttributes(G4Colour(0.0, 1.0, 0.0, 0.2)); - m_VisCatcher = new G4VisAttributes(G4Colour(0.0, 0.0, 1.0)); - m_VisGasC4H10 = new G4VisAttributes(G4Colour(0.0, 1.0, 0.0, 0.2)); - m_VisGasCF4 = new G4VisAttributes(G4Colour(0.0, 0.0, 1.0, 0.2)); + m_Event = new TVamosData(); + m_CalorimeterScorer = 0; + m_DCScorer = 0; + m_TMW1Scorer = 0; + m_Quad1 = 0; + m_Quad2 = 0; + m_Dipol = 0; + m_BeamCatcher = 0; + m_TMW1 = 0; + m_TMW2 = 0; + m_MWPPAC = 0; + m_DC3 = 0; + m_DC4 = 0; + m_DC1 = 0; + m_DC2 = 0; + + ICcounter = 0; + + // RGB Color + Transparency + m_VisQuad = new G4VisAttributes(G4Colour(1.0, 0.0, 0.0)); + m_VisVolumeVamos = new G4VisAttributes(G4Colour(1.0, 0.0, 0.0, 0.1)); + m_VisDC = new G4VisAttributes(G4Colour(0.0, 1.0, 0.0, 0.2)); + m_VisCatcher = new G4VisAttributes(G4Colour(0.0, 0.0, 1.0)); + m_VisGasC4H10 = new G4VisAttributes(G4Colour(0.0, 1.0, 0.0, 0.2)); + m_VisGasCF4 = new G4VisAttributes(G4Colour(0.0, 0.0, 1.0, 0.2)); } Vamos::~Vamos() {} @@ -135,200 +148,250 @@ Vamos::~Vamos() {} using namespace Vamos_NS; +///////////////////////////////////////////////////////////////////// void Vamos::AddVamos(G4double R, double Theta) { - m_R = R; - m_Theta = Theta; + m_R = R; + m_Theta = Theta; } +///////////////////////////////////////////////////////////////////// void Vamos::AddBeamCatcher(string Material, G4double Width, double Length, - double Thickness, G4ThreeVector Pos) { - CatcherMaterial = Material; - CatcherWidth = Width; - CatcherLength = Length; - CatcherThickness = Thickness; - R_Catcher = Pos[2]; - Pos[2] = -DetectionVolumeThickness * 0.5 + CatcherThickness * 0.5; - m_PosCatcher = Pos; + double Thickness, G4ThreeVector Pos) { + CatcherMaterial = Material; + CatcherWidth = Width; + CatcherLength = Length; + CatcherThickness = Thickness; + R_Catcher = Pos[2]; + Pos[2] = -DetectionVolumeThickness * 0.5 + CatcherThickness * 0.5; + m_PosCatcher = Pos; } // To add DriftChambers and the MWPPAC +///////////////////////////////////////////////////////////////////// void Vamos::AddDetector(G4double Z, string Gas, double Pressure, - double Temperature) { - m_Z.push_back(Z); - m_Gas.push_back(Gas); - m_Pressure.push_back(Pressure); - m_Temperature.push_back(Temperature); + double Temperature) { + m_Z.push_back(Z); + m_Gas.push_back(Gas); + m_Pressure.push_back(Pressure); + m_Temperature.push_back(Temperature); } +///////////////////////////////////////////////////////////////////// void Vamos::AddIC(G4double Z, double Thickness, string Gas, double Pressure, - double Temperature) { - m_ZIC.push_back(Z); - m_ThicknessIC.push_back(Thickness); - m_GasIC.push_back(Gas); - m_PressureIC.push_back(Pressure); - m_TemperatureIC.push_back(Temperature); + double Temperature) { + m_ZIC.push_back(Z); + m_ThicknessIC.push_back(Thickness); + m_GasIC.push_back(Gas); + m_PressureIC.push_back(Pressure); + m_TemperatureIC.push_back(Temperature); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // The two entry DriftChambers +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildDC1() { - if (!m_DC1) { - G4Box* box = new G4Box("Vamos_DC1", E_DCWidth * 0.5, E_DCLength * 0.5, - E_DCThickness * 0.5); - - G4Material* DetectorMaterial - = MaterialManager::getInstance()->GetGasFromLibrary( - m_Gas[0], m_Pressure[0], m_Temperature[0]); - - m_DC1 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC1", 0, 0, - 0); - m_DC1->SetVisAttributes(m_VisGasC4H10); - m_DC1->SetSensitiveDetector(m_DCScorer); - } - return m_DC1; + if (!m_DC1) { + G4Box* box = new G4Box("Vamos_DC1", E_DCWidth * 0.5, E_DCLength * 0.5, + E_DCThickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas[0], m_Pressure[0], m_Temperature[0]); + + m_DC1 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC1", 0, 0, + 0); + m_DC1->SetVisAttributes(m_VisGasC4H10); + m_DC1->SetSensitiveDetector(m_DCScorer); + } + return m_DC1; } +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildDC2() { - if (!m_DC2) { - G4Box* box = new G4Box("Vamos_DC2", E_DCWidth * 0.5, E_DCLength * 0.5, - E_DCThickness * 0.5); - - G4Material* DetectorMaterial - = MaterialManager::getInstance()->GetGasFromLibrary( - m_Gas[1], m_Pressure[1], m_Temperature[1]); - - m_DC2 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC2", 0, 0, - 0); - m_DC2->SetVisAttributes(m_VisGasC4H10); - m_DC2->SetSensitiveDetector(m_DCScorer); - } - return m_DC2; + if (!m_DC2) { + G4Box* box = new G4Box("Vamos_DC2", E_DCWidth * 0.5, E_DCLength * 0.5, + E_DCThickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas[1], m_Pressure[1], m_Temperature[1]); + + m_DC2 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC2", 0, 0, + 0); + m_DC2->SetVisAttributes(m_VisGasC4H10); + m_DC2->SetSensitiveDetector(m_DCScorer); + } + return m_DC2; } // Quadruples and Dipole just to make the visualisation nice +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildQuad1() { - if (!m_Quad1) { - G4Box* box = new G4Box("Vamos_Box", Vamos_NS::MagnetWidth * 0.5, - Vamos_NS::MagnetLenght * 0.5, - Vamos_NS::MagnetThickness * 0.5); - - G4Material* VamosMaterial - = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); - m_Quad1 = new G4LogicalVolume(box, VamosMaterial, "logic_Quad1", 0, 0, 0); - m_Quad1->SetVisAttributes(m_VisQuad); - } - return m_Quad1; + if (!m_Quad1) { + G4Box* box = new G4Box("Vamos_Box", Vamos_NS::MagnetWidth * 0.5, + Vamos_NS::MagnetLenght * 0.5, + Vamos_NS::MagnetThickness * 0.5); + + G4Material* VamosMaterial + = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); + m_Quad1 = new G4LogicalVolume(box, VamosMaterial, "logic_Quad1", 0, 0, 0); + m_Quad1->SetVisAttributes(m_VisQuad); + } + return m_Quad1; } +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildQuad2() { - if (!m_Quad2) { - G4Box* box = new G4Box("Vamos_Quad2", Vamos_NS::MagnetWidth * 0.5, - Vamos_NS::MagnetLenght * 0.5, - Vamos_NS::MagnetThickness * 0.5); - - G4Material* VamosMaterial - = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); - m_Quad1 = new G4LogicalVolume(box, VamosMaterial, "logic_Quad1", 0, 0, 0); - m_Quad1->SetVisAttributes(m_VisQuad); - } - return m_Quad1; + if (!m_Quad2) { + G4Box* box = new G4Box("Vamos_Quad2", Vamos_NS::MagnetWidth * 0.5, + Vamos_NS::MagnetLenght * 0.5, + Vamos_NS::MagnetThickness * 0.5); + + G4Material* VamosMaterial + = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); + m_Quad1 = new G4LogicalVolume(box, VamosMaterial, "logic_Quad1", 0, 0, 0); + m_Quad1->SetVisAttributes(m_VisQuad); + } + return m_Quad1; } +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildDipol() { - if (!m_Dipol) { - G4Box* box = new G4Box("Vamos_Dipol", Vamos_NS::MagnetWidth * 0.5, - Vamos_NS::MagnetLenght * 0.5, - Vamos_NS::DipolThickness * 0.5); - - G4Material* VamosMaterial - = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); - m_Dipol = new G4LogicalVolume(box, VamosMaterial, "logic_Dipol", 0, 0, 0); - m_Dipol->SetVisAttributes(m_VisQuad); - } - return m_Dipol; + if (!m_Dipol) { + G4Box* box = new G4Box("Vamos_Dipol", Vamos_NS::MagnetWidth * 0.5, + Vamos_NS::MagnetLenght * 0.5, + Vamos_NS::DipolThickness * 0.5); + + G4Material* VamosMaterial + = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); + m_Dipol = new G4LogicalVolume(box, VamosMaterial, "logic_Dipol", 0, 0, 0); + m_Dipol->SetVisAttributes(m_VisQuad); + } + return m_Dipol; } // Detection at the end of Vamos +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildBeamCatcher() { - if (!m_BeamCatcher) { - G4Box* box = new G4Box("Vamos_Catcher", CatcherWidth * 0.5, - CatcherLength * 0.5, CatcherThickness * 0.5); - - G4Material* Material - = MaterialManager::getInstance()->GetMaterialFromLibrary( - CatcherMaterial); - m_BeamCatcher - = new G4LogicalVolume(box, Material, "logic_Vamos_Catcher", 0, 0, 0); - m_BeamCatcher->SetVisAttributes(m_VisCatcher); - m_BeamCatcher->SetSensitiveDetector(m_CalorimeterScorer); - } - return m_BeamCatcher; + if (!m_BeamCatcher) { + G4Box* box = new G4Box("Vamos_Catcher", CatcherWidth * 0.5, + CatcherLength * 0.5, CatcherThickness * 0.5); + + G4Material* Material + = MaterialManager::getInstance()->GetMaterialFromLibrary( + CatcherMaterial); + m_BeamCatcher + = new G4LogicalVolume(box, Material, "logic_Vamos_Catcher", 0, 0, 0); + m_BeamCatcher->SetVisAttributes(m_VisCatcher); + m_BeamCatcher->SetSensitiveDetector(m_CalorimeterScorer); + } + return m_BeamCatcher; } +///////////////////////////////////////////////////////////////////// +G4LogicalVolume* Vamos::BuildTMW1() { + if (!m_TMW1) { + G4Box* box = new G4Box("Vamos_TMW1", TMW1_Width * 0.5, + TMW1_Length * 0.5, TMW1_Thickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas_TMW1, m_Pressure_TMW1, 295 * kelvin); + m_TMW1 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_TMW1", + 0, 0, 0); + m_TMW1->SetVisAttributes(m_VisGasC4H10); + + m_TMW1->SetSensitiveDetector(m_TMW1Scorer); + } + return m_TMW1; + +} + +///////////////////////////////////////////////////////////////////// +G4LogicalVolume* Vamos::BuildTMW2() { + if (!m_TMW2) { + G4Box* box = new G4Box("Vamos_TMW2", TMW2_Width * 0.5, + TMW2_Length * 0.5, TMW2_Thickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas_TMW2, m_Pressure_TMW2, 295 * kelvin); + m_TMW2 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_TMW2", + 0, 0, 0); + m_TMW2->SetVisAttributes(m_VisGasC4H10); + } + return m_TMW2; + +} + + +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildMWPPAC() { - if (!m_MWPPAC) { - G4Box* box = new G4Box("Vamos_MWPPAC", ChamberWidth * 0.5, - ChamberLength * 0.5, ChamberThickness * 0.5); - - G4Material* DetectorMaterial - = MaterialManager::getInstance()->GetGasFromLibrary( - m_Gas[2], m_Pressure[2], m_Temperature[2]); - m_MWPPAC = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_MWPPAC", - 0, 0, 0); - m_MWPPAC->SetVisAttributes(m_VisGasC4H10); - } - return m_MWPPAC; + if (!m_MWPPAC) { + G4Box* box = new G4Box("Vamos_MWPPAC", ChamberWidth * 0.5, + ChamberLength * 0.5, ChamberThickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas[0], m_Pressure[0], m_Temperature[0]); + m_MWPPAC = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_MWPPAC", + 0, 0, 0); + m_MWPPAC->SetVisAttributes(m_VisGasC4H10); + } + return m_MWPPAC; } +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildDC3() { - if (!m_DC3) { - G4Box* box = new G4Box("Vamos_DC3", ChamberWidth * 0.5, ChamberLength * 0.5, - ChamberThickness * 0.5); - - G4Material* DetectorMaterial - = MaterialManager::getInstance()->GetGasFromLibrary( - m_Gas[3], m_Pressure[3], m_Temperature[3]); - - m_DC3 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC3", 0, 0, - 0); - m_DC3->SetVisAttributes(m_VisGasC4H10); - m_DC3->SetSensitiveDetector(m_DCScorer); - } - return m_DC3; + if (!m_DC3) { + G4Box* box = new G4Box("Vamos_DC3", ChamberWidth * 0.5, ChamberLength * 0.5, + ChamberThickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas[3], m_Pressure[3], m_Temperature[3]); + + m_DC3 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC3", 0, 0, + 0); + m_DC3->SetVisAttributes(m_VisGasC4H10); + m_DC3->SetSensitiveDetector(m_DCScorer); + } + return m_DC3; } +///////////////////////////////////////////////////////////////////// G4LogicalVolume* Vamos::BuildDC4() { - if (!m_DC4) { - G4Box* box = new G4Box("Vamos_DC4", ChamberWidth * 0.5, ChamberLength * 0.5, - ChamberThickness * 0.5); - - G4Material* DetectorMaterial - = MaterialManager::getInstance()->GetGasFromLibrary( - m_Gas[4], m_Pressure[4], m_Temperature[4]); - - m_DC4 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC4", 0, 0, - 0); - m_DC4->SetVisAttributes(m_VisGasC4H10); - m_DC4->SetSensitiveDetector(m_DCScorer); - } - return m_DC4; + if (!m_DC4) { + G4Box* box = new G4Box("Vamos_DC4", ChamberWidth * 0.5, ChamberLength * 0.5, + ChamberThickness * 0.5); + + G4Material* DetectorMaterial + = MaterialManager::getInstance()->GetGasFromLibrary( + m_Gas[4], m_Pressure[4], m_Temperature[4]); + + m_DC4 = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_DC4", 0, 0, + 0); + m_DC4->SetVisAttributes(m_VisGasC4H10); + m_DC4->SetSensitiveDetector(m_DCScorer); + } + return m_DC4; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // In anticipation of use a macro void Vamos::ClearGeometry(){ - m_Z.clear(); - m_Gas.clear(); - m_Pressure.clear(); - m_Temperature.clear(); + m_Z.clear(); + m_Gas.clear(); + m_Pressure.clear(); + m_Temperature.clear(); - m_ZIC.clear(); - m_ThicknessIC.clear(); - m_PressureIC.clear(); - m_TemperatureIC.clear(); - m_GasIC.clear(); + m_ZIC.clear(); + m_ThicknessIC.clear(); + m_PressureIC.clear(); + m_TemperatureIC.clear(); + m_GasIC.clear(); } @@ -338,202 +401,237 @@ void Vamos::ClearGeometry(){ // Read stream at Configfile to pick-up parameters of detector (Position,...) // Called in DetecorConstruction::ReadDetectorConfiguration Method +///////////////////////////////////////////////////////////////////// void Vamos::ReadConfiguration(NPL::InputParser parser) { - vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Vamos"); - if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << "//// " << blocks.size() << " detectors found " << endl; - - vector<string> TokenBeamCatcher - = {"Material", "Width", "Length", "Thickness", "Pos"}; - vector<string> sphe = {"R", "Theta"}; - vector<string> TokenMWPPAC = {"Z", "Gas", "Pressure", "Temperature"}; - vector<string> TokenDC = {"Z", "Gas", "Pressure", "Temperature"}; - vector<string> TokenIC = {"Z", "Thickness", "Gas", "Pressure", "Temperature"}; - - for (unsigned int i = 0; i < blocks.size(); i++) { - if (blocks[i]->HasTokenList(sphe)) { - if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// Vamos " << i + 1 << endl; - G4double R = blocks[i]->GetDouble("R", "mm"); - G4double Theta = blocks[i]->GetDouble("Theta", "deg"); - AddVamos(R, Theta); - } - - else if (blocks[i]->GetMainValue() == "BeamCatcher" - && blocks[i]->HasTokenList(TokenBeamCatcher)) { - if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// BeamCatcher" << i + 1 << endl; - string Material = blocks[i]->GetString("Material"); - G4double Width = blocks[i]->GetDouble("Width", "mm"); - G4double Length = blocks[i]->GetDouble("Length", "mm"); - G4double Thickness = blocks[i]->GetDouble("Thickness", "mm"); - G4ThreeVector Pos - = NPS::ConvertVector(blocks[i]->GetTVector3("Pos", "mm")); - AddBeamCatcher(Material, Width, Length, Thickness, Pos); - } - - else if (blocks[i]->GetMainValue() == "MWPPAC" - && blocks[i]->HasTokenList(TokenMWPPAC)) { - if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// MWPPAC" << i + 1 << endl; - G4double Z = blocks[i]->GetDouble("Z", "mm"); - string Gas = blocks[i]->GetString("Gas"); - G4double Pressure = blocks[i]->GetDouble("Pressure", "bar"); - G4double Temperature = blocks[i]->GetDouble("Temperature", "kelvin"); - AddDetector(Z, Gas, Pressure, Temperature); - } - - else if (blocks[i]->GetMainValue() == "DC" - && blocks[i]->HasTokenList(TokenDC)) { - if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// DC" << i + 1 << endl; - G4double Z = blocks[i]->GetDouble("Z", "mm"); - string Gas = blocks[i]->GetString("Gas"); - G4double Pressure = blocks[i]->GetDouble("Pressure", "bar"); - G4double Temperature = blocks[i]->GetDouble("Temperature", "kelvin"); - AddDetector(Z, Gas, Pressure, Temperature); - } - - else if (blocks[i]->GetMainValue() == "IC" - && blocks[i]->HasTokenList(TokenIC)) { - if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// IC" << ICcounter+1 << endl; - G4double Z = blocks[i]->GetDouble("Z", "mm"); - G4double Thickness = blocks[i]->GetDouble("Thickness", "mm"); - string Gas = blocks[i]->GetString("Gas"); - G4double Pressure = blocks[i]->GetDouble("Pressure", "bar"); - G4double Temperature = blocks[i]->GetDouble("Temperature", "kelvin"); - AddIC(Z, Thickness, Gas, Pressure, Temperature); - ICcounter++; - } - - else { - cout << "ERROR: check your input file formatting " << endl; - exit(1); - } + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Vamos"); + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks.size() << " detectors found " << endl; + + vector<string> TokenBeamCatcher + = {"Material", "Width", "Length", "Thickness", "Pos"}; + vector<string> sphe = {"R", "Theta"}; + vector<string> TokenMWPPAC = {"Z", "Gas", "Pressure", "Temperature"}; + vector<string> TokenTMW = {"Z", "Gas", "Pressure"}; + vector<string> TokenDC = {"Z", "Gas", "Pressure", "Temperature"}; + vector<string> TokenIC = {"Z", "Thickness", "Gas", "Pressure", "Temperature"}; + + for (unsigned int i = 0; i < blocks.size(); i++) { + if (blocks[i]->HasTokenList(sphe)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// Vamos " << i + 1 << endl; + G4double R = blocks[i]->GetDouble("R", "mm"); + G4double Theta = blocks[i]->GetDouble("Theta", "deg"); + AddVamos(R, Theta); + } + else if (blocks[i]->GetMainValue() == "BeamCatcher" + && blocks[i]->HasTokenList(TokenBeamCatcher)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// BeamCatcher" << i + 1 << endl; + string Material = blocks[i]->GetString("Material"); + G4double Width = blocks[i]->GetDouble("Width", "mm"); + G4double Length = blocks[i]->GetDouble("Length", "mm"); + G4double Thickness = blocks[i]->GetDouble("Thickness", "mm"); + G4ThreeVector Pos + = NPS::ConvertVector(blocks[i]->GetTVector3("Pos", "mm")); + AddBeamCatcher(Material, Width, Length, Thickness, Pos); } -} -// Construct detector and inialise sensitive part. -// Called After DetecorConstruction::AddDetector Method -void Vamos::ConstructDetector(G4LogicalVolume* world) { + else if (blocks[i]->GetMainValue() == "MWPPAC" + && blocks[i]->HasTokenList(TokenMWPPAC)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// MWPPAC" << i + 1 << endl; + G4double Z = blocks[i]->GetDouble("Z", "mm"); + string Gas = blocks[i]->GetString("Gas"); + G4double Pressure = blocks[i]->GetDouble("Pressure", "bar"); + G4double Temperature = blocks[i]->GetDouble("Temperature", "kelvin"); + AddDetector(Z, Gas, Pressure, Temperature); + } - // Mother Volume of Vamos - G4double R = m_R + VamosVolumeThickness * 0.5; + else if (blocks[i]->GetMainValue() == "TMW1" + && blocks[i]->HasTokenList(TokenTMW)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// TMW1" << endl; + m_Z_TMW1 = blocks[i]->GetDouble("Z", "mm"); + m_Gas_TMW1 = blocks[i]->GetString("Gas"); + m_Pressure_TMW1 = blocks[i]->GetDouble("Pressure", "bar"); + //AddDetector(Z, Gas, Pressure, Temperature); + } - G4double X = R * sin(m_Theta) * cos(Phi); - G4double Y = R * sin(m_Theta) * sin(Phi); - G4double Z = R * cos(m_Theta); - G4ThreeVector Det_pos = G4ThreeVector(X, Y, Z); + else if (blocks[i]->GetMainValue() == "TMW2" + && blocks[i]->HasTokenList(TokenTMW)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// TMW2" << endl; + m_Z_TMW2 = blocks[i]->GetDouble("Z", "mm"); + m_Gas_TMW2 = blocks[i]->GetString("Gas"); + m_Pressure_TMW2 = blocks[i]->GetDouble("Pressure", "bar"); + //AddDetector(Z, Gas, Pressure, Temperature); + } - G4RotationMatrix* Rot1 = new G4RotationMatrix(); - Rot1->rotateY(m_Theta); - G4Box* MotherSolid - = new G4Box("MotherVolume", VamosVolumeWidth * 0.5, - VamosVolumeLength * 0.5, VamosVolumeThickness * 0.5); - G4Material* VolumeMaterial - = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); - G4LogicalVolume* MotherVolume = new G4LogicalVolume( - MotherSolid, VolumeMaterial, "MotherVolume", 0, 0, 0); + else if (blocks[i]->GetMainValue() == "DC" + && blocks[i]->HasTokenList(TokenDC)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// DC" << i + 1 << endl; + G4double Z = blocks[i]->GetDouble("Z", "mm"); + string Gas = blocks[i]->GetString("Gas"); + G4double Pressure = blocks[i]->GetDouble("Pressure", "bar"); + G4double Temperature = blocks[i]->GetDouble("Temperature", "kelvin"); + AddDetector(Z, Gas, Pressure, Temperature); + } - new G4PVPlacement(G4Transform3D(*Rot1, Det_pos), MotherVolume, "MotherVolume", - world, false, 0); - MotherVolume->SetVisAttributes(m_VisVolumeVamos); + else if (blocks[i]->GetMainValue() == "IC" + && blocks[i]->HasTokenList(TokenIC)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// IC" << ICcounter+1 << endl; + G4double Z = blocks[i]->GetDouble("Z", "mm"); + G4double Thickness = blocks[i]->GetDouble("Thickness", "mm"); + string Gas = blocks[i]->GetString("Gas"); + G4double Pressure = blocks[i]->GetDouble("Pressure", "bar"); + G4double Temperature = blocks[i]->GetDouble("Temperature", "kelvin"); + AddIC(Z, Thickness, Gas, Pressure, Temperature); + ICcounter++; + } - // SubVolume of Detection at the end of Vamos - // The position of the subvolume is defined by the position of the BeamCatcher - G4double R2 - = R_Catcher - CatcherThickness * 0.5 + DetectionVolumeThickness * 0.5; + else { + cout << "ERROR: check your input file formatting " << endl; + exit(1); + } - G4double X2 = R2 * sin(Det_Theta) * cos(0); - G4double Z2 = R2 * cos(Det_Theta); - G4ThreeVector Det_pos2 = G4ThreeVector(X2, 0, Z2); + } +} - G4RotationMatrix* Rot2 = new G4RotationMatrix(); - Rot2->rotateY(Det_Theta); +// Construct detector and inialise sensitive part. +// Called After DetecorConstruction::AddDetector Method +void Vamos::ConstructDetector(G4LogicalVolume* world) { - G4Box* MotherDetectorSolid - = new G4Box("MotherDetector", DetectionVolumeWidth * 0.5, - DetectionVolumeLength * 0.5, DetectionVolumeThickness * 0.5); + // Mother Volume of Vamos + G4double R = m_R + VamosVolumeThickness * 0.5; - G4LogicalVolume* MotherDetector = new G4LogicalVolume( - MotherDetectorSolid, VolumeMaterial, "MotherDetector", 0, 0, 0); + G4double X = R * sin(m_Theta) * cos(Phi); + G4double Y = R * sin(m_Theta) * sin(Phi); + G4double Z = R * cos(m_Theta); + G4ThreeVector Det_pos = G4ThreeVector(X, Y, Z); - new G4PVPlacement(G4Transform3D(*Rot2, Det_pos2), MotherDetector, - "MotherDetector", MotherVolume, false, 0); - MotherDetector->SetVisAttributes(m_VisVolumeVamos); + G4RotationMatrix* Rot1 = new G4RotationMatrix(); + Rot1->rotateY(m_Theta); + G4Box* MotherSolid + = new G4Box("MotherVolume", VamosVolumeWidth * 0.5, + VamosVolumeLength * 0.5, VamosVolumeThickness * 0.5); - // Position the entry DCs and the magnets in the MotherVolume - new G4PVPlacement(0, G4ThreeVector(0, 0, -VamosVolumeThickness * 0.5 + m_Z[0]), - BuildDC1(), "Entrance_DC1", MotherVolume, false, 1); + G4Material* VolumeMaterial + = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum"); + G4LogicalVolume* MotherVolume = new G4LogicalVolume( + MotherSolid, VolumeMaterial, "MotherVolume", 0, 0, 0); - new G4PVPlacement(0, G4ThreeVector(0, 0, -VamosVolumeThickness * 0.5 + m_Z[1]), - BuildDC2(), "Entrance_DC2", MotherVolume, false, 2); + new G4PVPlacement(G4Transform3D(*Rot1, Det_pos), MotherVolume, "MotherVolume", + world, false, 0); + MotherVolume->SetVisAttributes(m_VisVolumeVamos); - new G4PVPlacement( - 0, - G4ThreeVector(0, 0, (-VamosVolumeThickness + MagnetThickness) * 0.5 + 400), - BuildQuad1(), "Vamos", MotherVolume, false, 0); + // SubVolume of Detection at the end of Vamos + // The position of the subvolume is defined by the position of the BeamCatcher + G4double R2 + = R_Catcher - CatcherThickness * 0.5 + DetectionVolumeThickness * 0.5; - new G4PVPlacement( - 0, - G4ThreeVector(0, 0, - (-VamosVolumeThickness + MagnetThickness) * 0.5 + 700 * mm), - BuildQuad2(), "Vamos", MotherVolume, false, 0); + G4double X2 = R2 * sin(Det_Theta) * cos(0); + G4double Z2 = R2 * cos(Det_Theta); + G4ThreeVector Det_pos2 = G4ThreeVector(X2, 0, Z2); - new G4PVPlacement( - 0, - G4ThreeVector(0, 0, - (-VamosVolumeThickness + MagnetThickness) * 0.5 + 1500 * mm), - BuildDipol(), "Vamos", MotherVolume, false, 0); + G4RotationMatrix* Rot2 = new G4RotationMatrix(); + Rot2->rotateY(Det_Theta); - // Position the system of detection at the end of Vamos in the sub Volume - new G4PVPlacement(0, m_PosCatcher, BuildBeamCatcher(), "BeamCatcher", - MotherDetector, false, 3); + G4Box* MotherDetectorSolid + = new G4Box("MotherDetector", DetectionVolumeWidth * 0.5, + DetectionVolumeLength * 0.5, DetectionVolumeThickness * 0.5); - new G4PVPlacement( - 0, - G4ThreeVector(0, 0, - -DetectionVolumeThickness * 0.5 - + (m_Z[2] - R_Catcher + CatcherThickness * 0.5)), - BuildMWPPAC(), "MWPPAC", MotherDetector, false, 4); + G4LogicalVolume* MotherDetector = new G4LogicalVolume( + MotherDetectorSolid, VolumeMaterial, "MotherDetector", 0, 0, 0); - new G4PVPlacement( - 0, - G4ThreeVector(0, 0, - -DetectionVolumeThickness * 0.5 - + (m_Z[3] - R_Catcher + CatcherThickness * 0.5)), - BuildDC3(), "DC", MotherDetector, false, 5); + new G4PVPlacement(G4Transform3D(*Rot2, Det_pos2), MotherDetector, + "MotherDetector", MotherVolume, false, 0); + MotherDetector->SetVisAttributes(m_VisVolumeVamos); + + + // Position the entry DCs and the magnets in the MotherVolume + /*new G4PVPlacement(0, G4ThreeVector(0, 0, -VamosVolumeThickness * 0.5 + m_Z[0]), + BuildDC1(), "Entrance_DC1", MotherVolume, false, 1); + + new G4PVPlacement(0, G4ThreeVector(0, 0, -VamosVolumeThickness * 0.5 + m_Z[1]), + BuildDC2(), "Entrance_DC2", MotherVolume, false, 2);*/ + + new G4PVPlacement( + 0, + G4ThreeVector(0, 0, (-VamosVolumeThickness + MagnetThickness) * 0.5 + 400), + BuildQuad1(), "Vamos", MotherVolume, false, 0); + + new G4PVPlacement( + 0, + G4ThreeVector(0, 0, + (-VamosVolumeThickness + MagnetThickness) * 0.5 + 700 * mm), + BuildQuad2(), "Vamos", MotherVolume, false, 0); + + new G4PVPlacement( + 0, + G4ThreeVector(0, 0, + (-VamosVolumeThickness + MagnetThickness) * 0.5 + 1500 * mm), + BuildDipol(), "Vamos", MotherVolume, false, 0); + + // Position the system of detection at the end of Vamos in the sub Volume + /*new G4PVPlacement(0, m_PosCatcher, BuildBeamCatcher(), "BeamCatcher", + MotherDetector, false, 3);*/ + + new G4PVPlacement( + 0, + G4ThreeVector(0, 0, -VamosVolumeThickness * 0.5 + TMW1_Thickness * 0.5), + BuildTMW1(), "TMW1", MotherVolume, false, 0); + + new G4PVPlacement( + 0, + G4ThreeVector(0, 0, -VamosVolumeThickness * 0.5 + TMW2_Thickness * 0.5 + m_Z_TMW2), + BuildTMW2(), "TMW2", MotherVolume, false, 0); + + +/* new G4PVPlacement( + 0, + G4ThreeVector(0, 0, + -DetectionVolumeThickness * 0.5 + + (m_Z[0] - R_Catcher + CatcherThickness * 0.5)), + BuildMWPPAC(), "MWPPAC", MotherDetector, false, 1); +*/ + /* new G4PVPlacement( + 0, + G4ThreeVector(0, 0, + -DetectionVolumeThickness * 0.5 + + (m_Z[3] - R_Catcher + CatcherThickness * 0.5)), + BuildDC3(), "DC", MotherDetector, false, 5); - new G4PVPlacement( - 0, - G4ThreeVector(0, 0, - -DetectionVolumeThickness * 0.5 - + (m_Z[4] - R_Catcher + CatcherThickness * 0.5)), - BuildDC4(), "DC", MotherDetector, false, 6); - - // Construct and position the Ionisations Chambers - for (int i = 0; i < ICcounter; i++) { - G4Box* box = new G4Box("Vamos_IC", ChamberWidth * 0.5, ChamberLength * 0.5, - m_ThicknessIC[i] * 0.5); - G4Material* GasIC = MaterialManager::getInstance()->GetGasFromLibrary( - m_GasIC[i], m_PressureIC[i], m_TemperatureIC[i]); - G4LogicalVolume* IC - = new G4LogicalVolume(box, GasIC, "logic_Vamos_IC", 0, 0, 0); - IC->SetVisAttributes(m_VisGasCF4); - IC->SetSensitiveDetector(m_CalorimeterScorer); new G4PVPlacement( - 0, - G4ThreeVector(0, 0, - -DetectionVolumeThickness * 0.5 - + (m_ZIC[i] - R_Catcher + CatcherThickness * 0.5)), - IC, "IC", MotherDetector, false, i + 7); - } + 0, + G4ThreeVector(0, 0, + -DetectionVolumeThickness * 0.5 + + (m_Z[4] - R_Catcher + CatcherThickness * 0.5)), + BuildDC4(), "DC", MotherDetector, false, 6);*/ + + // Construct and position the Ionisations Chambers + /*for (int i = 0; i < ICcounter; i++) { + G4Box* box = new G4Box("Vamos_IC", ChamberWidth * 0.5, ChamberLength * 0.5, + m_ThicknessIC[i] * 0.5); + G4Material* GasIC = MaterialManager::getInstance()->GetGasFromLibrary( + m_GasIC[i], m_PressureIC[i], m_TemperatureIC[i]); + G4LogicalVolume* IC + = new G4LogicalVolume(box, GasIC, "logic_Vamos_IC", 0, 0, 0); + IC->SetVisAttributes(m_VisGasCF4); + IC->SetSensitiveDetector(m_CalorimeterScorer); + new G4PVPlacement( + 0, + G4ThreeVector(0, 0, + -DetectionVolumeThickness * 0.5 + + (m_ZIC[i] - R_Catcher + CatcherThickness * 0.5)), + IC, "IC", MotherDetector, false, i + 7); + }*/ } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -541,12 +639,12 @@ void Vamos::ConstructDetector(G4LogicalVolume* world) { // Called After DetecorConstruction::AddDetector Method void Vamos::InitializeRootOutput() { - RootOutput* pAnalysis = RootOutput::getInstance(); - TTree* pTree = pAnalysis->GetTree(); - if (!pTree->FindBranch("Vamos")) { - pTree->Branch("Vamos", "TVamosData", &m_Event); - } - pTree->SetBranchAddress("Vamos", &m_Event); + RootOutput* pAnalysis = RootOutput::getInstance(); + TTree* pTree = pAnalysis->GetTree(); + if (!pTree->FindBranch("Vamos")) { + pTree->Branch("Vamos", "TVamosData", &m_Event); + } + pTree->SetBranchAddress("Vamos", &m_Event); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -554,67 +652,71 @@ void Vamos::InitializeRootOutput() { // Called at in the EventAction::EndOfEventAvtion void Vamos::ReadSensitive(const G4Event*) { - m_Event->Clear(); - - /////////// - // Calorimeter scorer - CalorimeterScorers::PS_Calorimeter* Scorer - = (CalorimeterScorers::PS_Calorimeter*)m_CalorimeterScorer->GetPrimitive( - 0); - unsigned int size = Scorer->GetMult(); - for (unsigned int i = 0; i < size; i++) { - vector<unsigned int> level = Scorer->GetLevel(i); - G4double Energy - = RandGauss::shoot(Scorer->GetEnergy(i), Vamos_NS::ResoEnergy); - if (Energy > Vamos_NS::EnergyThreshold) { - G4double Time = RandGauss::shoot(Scorer->GetTime(i), Vamos_NS::ResoTime); - int DetectorNbr = level[0]; - m_Event->SetEnergy(DetectorNbr, Energy); - m_Event->SetTime(DetectorNbr, Time); - } - } - /////////// - // DriftChamber scorer - DriftChamberScorers::PS_DriftChamber* Scorer2 - = (DriftChamberScorers::PS_DriftChamber*)m_DCScorer->GetPrimitive(0); - unsigned int size2 = Scorer2->GetMult(); - for (unsigned int i = 0; i < size2; i++) { - vector<unsigned int> level = Scorer2->GetLevel(i); - G4double DriftTime - = RandGauss::shoot(Scorer2->GetDriftTime(i)/Scorer2->GetCounter(i), Vamos_NS::ResoDriftTime); - G4double X - = RandGauss::shoot(Scorer2->GetX(i)/Scorer2->GetCounter(i), ResoPosX); - int DetectorNbr = level[0]; - m_Event->SetDrift(DetectorNbr, DriftTime, X); + m_Event->Clear(); + + /////////// + // Calorimeter scorer + CalorimeterScorers::PS_Calorimeter* Scorer + = (CalorimeterScorers::PS_Calorimeter*)m_CalorimeterScorer->GetPrimitive(0); + unsigned int size = Scorer->GetMult(); + for (unsigned int i = 0; i < size; i++) { + vector<unsigned int> level = Scorer->GetLevel(i); + G4double Energy + = RandGauss::shoot(Scorer->GetEnergy(i), Vamos_NS::ResoEnergy); + if (Energy > Vamos_NS::EnergyThreshold) { + G4double Time = RandGauss::shoot(Scorer->GetTime(i), Vamos_NS::ResoTime); + int DetectorNbr = level[0]; + m_Event->SetEnergy(DetectorNbr, Energy); + m_Event->SetTime(DetectorNbr, Time); } + } + /////////// + // DriftChamber scorer + DriftChamberScorers::PS_DriftChamber* Scorer2 + = (DriftChamberScorers::PS_DriftChamber*)m_DCScorer->GetPrimitive(0); + unsigned int size2 = Scorer2->GetMult(); + for (unsigned int i = 0; i < size2; i++) { + vector<unsigned int> level = Scorer2->GetLevel(i); + G4double DriftTime + = RandGauss::shoot(Scorer2->GetDriftTime(i)/Scorer2->GetCounter(i), Vamos_NS::ResoDriftTime); + G4double X + = RandGauss::shoot(Scorer2->GetX(i)/Scorer2->GetCounter(i), ResoPosX); + int DetectorNbr = level[0]; + m_Event->SetDrift(DetectorNbr, DriftTime, X); + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //////////////////////////////////////////////////////////////// void Vamos::InitializeScorers() { - // This check is necessary in case the geometry is reloaded - bool already_exist = false; - m_DCScorer = CheckScorer("DCScorer", already_exist); - m_CalorimeterScorer = CheckScorer("VamosScorer", already_exist); - if (already_exist) - return; - - // Otherwise the scorer is initialised - vector<int> level; - level.push_back(0); - - G4VPrimitiveScorer* Calorimeter - = new CalorimeterScorers::PS_Calorimeter("Calorimeter", level, 0); - m_CalorimeterScorer->RegisterPrimitive(Calorimeter); - - G4VPrimitiveScorer* Drift = new DriftChamberScorers::PS_DriftChamber( - "Drift", level, DriftDir, DriftSpeed, 0); - m_DCScorer->RegisterPrimitive(Drift); - - // and register it to the multifunctionnal detector - G4SDManager::GetSDMpointer()->AddNewDetector(m_DCScorer); - G4SDManager::GetSDMpointer()->AddNewDetector(m_CalorimeterScorer); + // This check is necessary in case the geometry is reloaded + bool already_exist = false; + m_DCScorer = CheckScorer("DCScorer", already_exist); + m_CalorimeterScorer = CheckScorer("VamosScorer", already_exist); + m_TMW1Scorer = CheckScorer("TMW1Scorer", already_exist); + if (already_exist) + return; + + // Otherwise the scorer is initialised + vector<int> level; + level.push_back(0); + + G4VPrimitiveScorer* Calorimeter + = new CalorimeterScorers::PS_Calorimeter("Calorimeter", level, 0); + m_CalorimeterScorer->RegisterPrimitive(Calorimeter); + + G4VPrimitiveScorer* Drift = new DriftChamberScorers::PS_DriftChamber( + "Drift", level, DriftDir, DriftSpeed, 0); + m_DCScorer->RegisterPrimitive(Drift); + + G4VPrimitiveScorer* InteractionTMW1 = new InteractionScorers::PS_Interactions("InteractionTMW1",ms_InterCoord,0); + m_TMW1Scorer->RegisterPrimitive(InteractionTMW1); + + // and register it to the multifunctionnal detector + G4SDManager::GetSDMpointer()->AddNewDetector(m_DCScorer); + G4SDManager::GetSDMpointer()->AddNewDetector(m_CalorimeterScorer); + G4SDManager::GetSDMpointer()->AddNewDetector(m_TMW1Scorer); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -628,13 +730,13 @@ NPS::VDetector* Vamos::Construct() { return (NPS::VDetector*)new Vamos(); } // Registering the construct method to the factory // //////////////////////////////////////////////////////////////////////////////// extern "C" { - class proxy_nps_Vamos { - public: - proxy_nps_Vamos() { - NPS::DetectorFactory::getInstance()->AddToken("Vamos", "Vamos"); - NPS::DetectorFactory::getInstance()->AddDetector("Vamos", Vamos::Construct); - } - }; - - proxy_nps_Vamos p_nps_Vamos; + class proxy_nps_Vamos { + public: + proxy_nps_Vamos() { + NPS::DetectorFactory::getInstance()->AddToken("Vamos", "Vamos"); + NPS::DetectorFactory::getInstance()->AddDetector("Vamos", Vamos::Construct); + } + }; + + proxy_nps_Vamos p_nps_Vamos; } diff --git a/NPSimulation/Detectors/Vamos/Vamos.hh b/NPSimulation/Detectors/Vamos/Vamos.hh index d4e6b3dc0372b2e92ccef1261623cb02a75cc9fc..b33f39dfc66fd70a185331d33590d4620deb546e 100644 --- a/NPSimulation/Detectors/Vamos/Vamos.hh +++ b/NPSimulation/Detectors/Vamos/Vamos.hh @@ -39,134 +39,147 @@ using namespace std; #include "NPInputParser.h" class Vamos : public NPS::VDetector{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// + public: + Vamos() ; + virtual ~Vamos() ; + + //////////////////////////////////////////////////// + /////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// + public: + + void AddVamos(G4double R,double Theta); + void AddBeamCatcher(string Material, G4double Width, double Length, double Thickness, G4ThreeVector Pos); + void AddDetector(G4double Z, string Gas, double Pressure, double Temperature); + void AddIC(G4double Z, double Thickness, string Gas, double Pressure, double Temperature); + + G4LogicalVolume* BuildDC1(); + G4LogicalVolume* BuildDC2(); + + G4LogicalVolume* BuildQuad1(); + G4LogicalVolume* BuildQuad2(); + G4LogicalVolume* BuildDipol(); + + G4LogicalVolume* BuildBeamCatcher(); + G4LogicalVolume* BuildMWPPAC(); + G4LogicalVolume* BuildDC3(); + G4LogicalVolume* BuildDC4(); + G4LogicalVolume* BuildIC(); + G4LogicalVolume* BuildTMW1(); + G4LogicalVolume* BuildTMW2(); + + private: + + G4LogicalVolume* m_DC1; + G4LogicalVolume* m_DC2; + + G4LogicalVolume* m_Quad1; + G4LogicalVolume* m_Quad2; + G4LogicalVolume* m_Dipol; + + G4LogicalVolume* m_BeamCatcher; + G4LogicalVolume* m_MWPPAC; + G4LogicalVolume* m_DC3; + G4LogicalVolume* m_DC4; + G4LogicalVolume* m_IC; + G4LogicalVolume* m_TMW1; + G4LogicalVolume* m_TMW2; + + G4double ICcounter; + //////////////////////////////////////////////////// - /////// Default Constructor and Destructor ///////// + ////// Inherite from NPS::VDetector class ///////// //////////////////////////////////////////////////// - public: - Vamos() ; - virtual ~Vamos() ; + public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + + void ClearGeometry(); + + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(NPL::InputParser) ; - //////////////////////////////////////////////////// - /////// Specific Function of this Class /////////// - //////////////////////////////////////////////////// - public: + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world) ; - void AddVamos(G4double R,double Theta); - void AddBeamCatcher(string Material, G4double Width, double Length, double Thickness, G4ThreeVector Pos); - void AddDetector(G4double Z, string Gas, double Pressure, double Temperature); - void AddIC(G4double Z, double Thickness, string Gas, double Pressure, double Temperature); + // Add Detector branch to the EventTree. + // Called After DetecorConstruction::AddDetector Method + void InitializeRootOutput() ; - G4LogicalVolume* BuildDC1(); - G4LogicalVolume* BuildDC2(); + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event) ; - G4LogicalVolume* BuildQuad1(); - G4LogicalVolume* BuildQuad2(); - G4LogicalVolume* BuildDipol(); - - G4LogicalVolume* BuildBeamCatcher(); - G4LogicalVolume* BuildMWPPAC(); - G4LogicalVolume* BuildDC3(); - G4LogicalVolume* BuildDC4(); - G4LogicalVolume* BuildIC(); - - private: - - G4LogicalVolume* m_DC1; - G4LogicalVolume* m_DC2; - - G4LogicalVolume* m_Quad1; - G4LogicalVolume* m_Quad2; - G4LogicalVolume* m_Dipol; - - G4LogicalVolume* m_BeamCatcher; - G4LogicalVolume* m_MWPPAC; - G4LogicalVolume* m_DC3; - G4LogicalVolume* m_DC4; - G4LogicalVolume* m_IC; - - G4double ICcounter; - - //////////////////////////////////////////////////// - ////// Inherite from NPS::VDetector class ///////// - //////////////////////////////////////////////////// - public: - // Read stream at Configfile to pick-up parameters of detector (Position,...) - - void ClearGeometry(); - - // Called in DetecorConstruction::ReadDetextorConfiguration Method - void ReadConfiguration(NPL::InputParser) ; - - // Construct detector and inialise sensitive part. - // Called After DetecorConstruction::AddDetector Method - void ConstructDetector(G4LogicalVolume* world) ; - - // Add Detector branch to the EventTree. - // Called After DetecorConstruction::AddDetector Method - void InitializeRootOutput() ; - - // Read sensitive part and fill the Root tree. - // Called at in the EventAction::EndOfEventAvtion - void ReadSensitive(const G4Event* event) ; - - public: - // Scorer - // Initialize all Scorer used by Vamos - void InitializeScorers() ; - - // Associated Scorer - G4MultiFunctionalDetector* m_CalorimeterScorer ; - G4MultiFunctionalDetector* m_DCScorer ; - - //////////////////////////////////////////////////// - ///////////Event class to store Data//////////////// - //////////////////////////////////////////////////// - - private: - TVamosData* m_Event ; - - //////////////////////////////////////////////////// - ///////////////Private intern Data////////////////// - //////////////////////////////////////////////////// - - private: - - // Geometry - - G4double R_Catcher = 0; - G4double CatcherWidth = 0; - G4double CatcherLength = 0; - G4double CatcherThickness = 0; - G4double m_R = 0; // distance Target- Entrance of the Mother Volume - G4double m_Theta = 0; - // Detector Coordinate - - string CatcherMaterial; - - G4ThreeVector m_PosCatcher; - vector<G4double> m_Z ; - vector<string> m_Gas; - vector<G4double> m_Pressure; - vector<G4double> m_Temperature; + public: + // Scorer + // Initialize all Scorer used by Vamos + void InitializeScorers() ; - vector<G4double> m_ZIC; - vector<G4double> m_ThicknessIC; - vector<G4double> m_PressureIC; - vector<G4double> m_TemperatureIC; - vector<string> m_GasIC; + // Associated Scorer + G4MultiFunctionalDetector* m_CalorimeterScorer ; + G4MultiFunctionalDetector* m_DCScorer ; + G4MultiFunctionalDetector* m_TMW1Scorer ; - // Shape type + //////////////////////////////////////////////////// + ///////////Event class to store Data//////////////// + //////////////////////////////////////////////////// + + private: + TVamosData* m_Event ; - // Visualisation Attribute - G4VisAttributes* m_VisQuad; - G4VisAttributes* m_VisDC; - G4VisAttributes* m_VisVolumeVamos; - G4VisAttributes* m_VisCatcher; - G4VisAttributes* m_VisGasC4H10; - G4VisAttributes* m_VisGasCF4; + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// - public: - static NPS::VDetector* Construct(); + private: + + // Geometry + + G4double R_Catcher = 0; + G4double CatcherWidth = 0; + G4double CatcherLength = 0; + G4double CatcherThickness = 0; + G4double m_R = 0; // distance Target- Entrance of the Mother Volume + G4double m_Theta = 0; + // Detector Coordinate + + string CatcherMaterial; + + G4ThreeVector m_PosCatcher; + vector<G4double> m_Z ; + vector<string> m_Gas; + vector<G4double> m_Pressure; + vector<G4double> m_Temperature; + + vector<G4double> m_ZIC; + vector<G4double> m_ThicknessIC; + vector<G4double> m_PressureIC; + vector<G4double> m_TemperatureIC; + vector<string> m_GasIC; + + // TMW1-2 + double m_Z_TMW1; + double m_Z_TMW2; + string m_Gas_TMW1; + string m_Gas_TMW2; + double m_Pressure_TMW1; + double m_Pressure_TMW2; + + // Shape type + + // Visualisation Attribute + G4VisAttributes* m_VisQuad; + G4VisAttributes* m_VisDC; + G4VisAttributes* m_VisVolumeVamos; + G4VisAttributes* m_VisCatcher; + G4VisAttributes* m_VisGasC4H10; + G4VisAttributes* m_VisGasCF4; + + public: + static NPS::VDetector* Construct(); }; #endif diff --git a/NPSimulation/EventGenerator/EventGeneratorGEFReader.cc b/NPSimulation/EventGenerator/EventGeneratorGEFReader.cc index 8b72743c198db8020b7662e2fbe338a450423d91..c4e64349249c92cc71176129623eaa79360ce272 100644 --- a/NPSimulation/EventGenerator/EventGeneratorGEFReader.cc +++ b/NPSimulation/EventGenerator/EventGeneratorGEFReader.cc @@ -160,7 +160,7 @@ void EventGeneratorGEFReader::ReadConfiguration(NPL::InputParser parser){ { it->m_FissioningSystemName=blocks[i]->GetString("FissioningSystem"); m_FissioningSystem=new NPL::Particle(it->m_FissioningSystemName); - m_FissioningSystem->SetKineticEnergy(0,0,0); + m_FissioningSystem->SetKineticEnergy(0,0,0); } if(blocks[i]->HasToken("SigmaX")) it->m_SigmaX=blocks[i]->GetDouble("SigmaX","mm"); @@ -198,8 +198,10 @@ void EventGeneratorGEFReader::GetBoostFromTwoBodyReaction(double Ex){ m_TwoBodyReaction->KineRelativistic(Theta3,E3,Theta4,E4); double Phi4 = RandFlat::shoot() * 2 * pi; + double Phi3 = Phi4 - pi; m_FissioningSystem->SetKineticEnergy(E4,Theta4,Phi4); + m_TwoBodyReaction->SetParticle3(E3,Theta3,Phi3); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -229,6 +231,7 @@ void EventGeneratorGEFReader::GenerateEvent(G4Event*){ NPL::Particle *Proton=new NPL::Particle("1H"); NPL::Particle *Gamma=new NPL::Particle("gamma"); NPL::Particle *Fragment; + NPL::Particle *Ejectile; TVector3 FissioningSystemBoost; int it=0; @@ -264,12 +267,13 @@ void EventGeneratorGEFReader::GenerateEvent(G4Event*){ double Ex = DataLine.at(25); // Excitation energy at fission if(m_isTwoBody){ GetBoostFromTwoBodyReaction(Ex); + Ejectile = m_TwoBodyReaction->GetParticle3(); } FissioningSystemBoost = m_FissioningSystem->GetEnergyImpulsion().BoostVector(); - + int Z_CN = DataLine.at(1); int A_CN = DataLine.at(2); - + m_FissionConditions->SetZ_CN(Z_CN); m_FissionConditions->SetA_CN(A_CN); m_FissionConditions->SetEx_CN(Ex); @@ -371,29 +375,29 @@ void EventGeneratorGEFReader::GenerateEvent(G4Event*){ else if(DataLine.size()>0 && DataLine.at(0)==0 && (AllowedParticles.size()==0 || std::find(AllowedParticles.begin(), AllowedParticles.end(), "neutron") != AllowedParticles.end())) for(int it=0;it<(DataLine.size()-1)/3;it++) - {// Promt fission neutron treatment + {// Promt fission neutron treatment - double ELabn = DataLine.at(1+3*it); - double cos_thetan = DataLine.at(2+3*it); - double Phin = DataLine.at(3+3*it) *M_PI/180.; + double ELabn = DataLine.at(1+3*it); + double cos_thetan = DataLine.at(2+3*it); + double Phin = DataLine.at(3+3*it) *M_PI/180.; - TVector3 NeutronLabAngle(0,0,1.); - NeutronLabAngle.SetMagThetaPhi(1.,acos(cos_thetan),Phin); - NeutronLabAngle.RotateUz(LightFragmentDirection); - Neutron->SetKineticEnergy(ELabn,NeutronLabAngle.Theta(),NeutronLabAngle.Phi()); + TVector3 NeutronLabAngle(0,0,1.); + NeutronLabAngle.SetMagThetaPhi(1.,acos(cos_thetan),Phin); + NeutronLabAngle.RotateUz(LightFragmentDirection); + Neutron->SetKineticEnergy(ELabn,NeutronLabAngle.Theta(),NeutronLabAngle.Phi()); - TLorentzVector ImpulsionNeutron = Neutron->GetEnergyImpulsion(); - ImpulsionNeutron.Boost(FissioningSystemBoost); - ELabn = ImpulsionNeutron.E()-Neutron->Mass(); - cos_thetan = ImpulsionNeutron.CosTheta(); - Phin = NeutronLabAngle.Phi(); + TLorentzVector ImpulsionNeutron = Neutron->GetEnergyImpulsion(); + ImpulsionNeutron.Boost(FissioningSystemBoost); + ELabn = ImpulsionNeutron.E()-Neutron->Mass(); + cos_thetan = ImpulsionNeutron.CosTheta(); + Phin = NeutronLabAngle.Phi(); - ELab .push_back(ELabn); - CosThetaLab.push_back(cos_thetan); - PhiLab .push_back(Phin); - vParticle .push_back(G4ParticleTable::GetParticleTable()->FindParticle("neutron")); + ELab .push_back(ELabn); + CosThetaLab.push_back(cos_thetan); + PhiLab .push_back(Phin); + vParticle .push_back(G4ParticleTable::GetParticleTable()->FindParticle("neutron")); - fileParticleMultiplicity++; + fileParticleMultiplicity++; } @@ -476,6 +480,19 @@ void EventGeneratorGEFReader::GenerateEvent(G4Event*){ NPS::Particle particle(GeneratedParticle, theta,particle_energy,G4ThreeVector(Momentum.x(), Momentum.y(), Momentum.z()),G4ThreeVector(x0, y0, z0)); m_ParticleStack->AddParticleToStack(particle); } + + if(m_isTwoBody){ + G4double theta = Ejectile->GetImpulsion().Theta(); + G4double phi = Ejectile->GetImpulsion().Phi(); + G4double particle_energy = Ejectile->GetEnergy(); + G4ParticleDefinition* GeneratedParticle = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(Ejectile->GetZ(),Ejectile->GetA(),0.); + + Momentum = ShootParticle(theta,phi,par.m_direction); + //cout << "particle_energy=" << particle_energy << endl; + NPS::Particle particle(GeneratedParticle, theta,particle_energy,G4ThreeVector(Momentum.x(), Momentum.y(), Momentum.z()),G4ThreeVector(x0, y0, z0)); + m_ParticleStack->AddParticleToStack(particle); + + } } } diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx index f9927ec6b0394f8d2004217309603481f8e6115b..8e25260c22852da47032736e0de72b7adadde15c 100644 --- a/Projects/AlPhaPha/2024/Analysis.cxx +++ b/Projects/AlPhaPha/2024/Analysis.cxx @@ -482,6 +482,7 @@ void Analysis::VamosAnalysis(){ FF_Y1 = FPMW->PositionY[0]; FF_Y3 = FPMW->PositionY[2]; + //FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000); FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000); FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf/1000); @@ -504,18 +505,13 @@ void Analysis::VamosAnalysis(){ double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3}; // To know time of electron drift in a section of the chio for (int seg = 0 ; seg < IC->fIC_TS.size() ; seg++){ - if (FPMW_Section != 0){ - FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - ((Time->GetTime_MWPC14(0)-Toff14.at(FPMW_Section-1)) - (Time->GetTime_MWPC13(0)- Toff13.at(FPMW_Section-1))))); - } - else { - FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - ((Time->GetTime_MWPC14(0)) - (Time->GetTime_MWPC13(0))))); - } + FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section)))); } - FF_T13 = - MTOF_FP0_T0V[0] + Toff[FPMWPat]; + //FF_T13 = -Time->GetTime_MWPC13(0) - Toff13[FPMW_Section-1] + 589; FF_D13 = FF_Path - path1 + path2; FF_V13 = FF_D13/FF_T13; FF_Beta13 = FF_V13/29.9792458; diff --git a/Projects/AlPhaPha/2024/ReadMe.md b/Projects/AlPhaPha/2024/ReadMe.md index 9f8a2923086cba2d3742f3c0f31cca3b1ec98010..86105c1452fe9c5f8383b7add95aba72e7a50526 100644 --- a/Projects/AlPhaPha/2024/ReadMe.md +++ b/Projects/AlPhaPha/2024/ReadMe.md @@ -39,7 +39,7 @@ Don't forget to modify the input file . Your project.config must point to the root dir of your computer # Compatibility AlmaLinux -Never import a detector class in a macro, if you do be sure to put a +Never import a detector class in a macro, if you do, be sure to put a ``` #ifdef 0 #include DETECTOR.h diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C new file mode 100644 index 0000000000000000000000000000000000000000..68d3a24a0d5893da0f3e42a45fbcdae50171ca2f --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C @@ -0,0 +1,163 @@ +#include <TCanvas.h> +#include <TChain.h> +#include "ProfileEvaluator.h" +#include "TICPhysics.h" +#include "TTimeData.h" +#include <TStyle.h> +#include <chrono> +#include <TH3.h> +#include <TH2.h> + + +void EvaluateProfileFromFile(const char* filename = "input.root", const char* profname = "prof", Double_t x = 0, Double_t y = 0) ; + +vector<double> TxtToVector(const char *Path); + + +void CorrectXY(){ + + ProfileEvaluator evaluator; + evaluator.LoadProfile("Output/RatioProfile.root","ICOneZeroProfile"); + + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../root/analysis/VamosCalib247.root"); + + TTimeData *Time = new TTimeData(); + TICPhysics* IC = new TICPhysics() ; + double FF_IC_X, FF_IC_Y, FF_V13, FF_DriftTime; + + + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../mwpc/Toff/output/Toff13.txt"; + const char* Path14 = "../../mwpc/Toff/output/Toff14.txt"; + const char* Path23 = "../../mwpc/Toff/output/Toff23.txt"; + const char* Path24 = "../../mwpc/Toff/output/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + chain->SetBranchStatus("FF_IC_Y", true); + chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-1000.0,1000.0,100,-1200.0,1000.0); + TProfile2D *PxyzCorr = new TProfile2D("PxyzCorr","PxyzCorr",100,-1000.0,1000.0,100,-1200.0,1000.0); + + + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + if(Time->GetMWPC13Mult()==1 && IC->fIC_raw[8] >0){ + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + + + Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; + + if(IC->fIC_raw[8] >0 && ICRatio <= 8 && ICRatio >0.1 ) { + + Double_t ICRatioCorr = ICRatio * 1.3 / evaluator.Evaluate(FF_IC_X,FF_DriftTime,true); + if (ICRatioCorr >100 ) ICRatioCorr = 1.2; + Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio); + PxyzCorr->Fill(FF_IC_X,FF_DriftTime,ICRatioCorr); + } + } + + } + + gStyle->SetCanvasPreferGL(true); + TCanvas *c1 = new TCanvas("c1","c1"); + gStyle->SetPalette(kRainBow); + Pxyz->SetXTitle("X"); + Pxyz->SetYTitle("DriftTime"); + Pxyz->SetZTitle("RatioIC"); + Pxyz->SetMinimum(1.0); + Pxyz->SetMaximum(1.5); + Pxyz->Draw("GL SURF2"); // Configure the 3D view + c1->Update(); + + TCanvas *c2 = new TCanvas("c2","c2"); + gStyle->SetPalette(kRainBow); + PxyzCorr->SetXTitle("X"); + PxyzCorr->SetYTitle("DriftTime"); + PxyzCorr->SetZTitle("RatioIC"); + PxyzCorr->SetMinimum(1.0); + PxyzCorr->SetMaximum(1.5); + PxyzCorr->Draw("GL SURF2"); // Configure the 3D view + + TFile *ofile = new TFile("Output/RatioProfile.root" ,"recreate" ); + Pxyz ->Write(); + +} + + + +void EvaluateProfileFromFile(const char* filename , + const char* profname , + Double_t x , + Double_t y ) { + ProfileEvaluator evaluator; + if (!evaluator.LoadProfile(filename, profname)) { + printf("Failed to load profile\n"); + return; + } + + evaluator.PrintInfo(); + Double_t z = evaluator.Evaluate(x, y, true); + printf("z(%.2f, %.2f) = %.3f\n", x, y, z); + + // Quick visualization + TCanvas* c = new TCanvas("c", "Profile View", 800, 400); + c->Divide(2,1); + + c->cd(1); + evaluator.GetProfile()->Draw("colz"); + + c->cd(2); + evaluator.GetProfile()->Draw("surf1"); +} + +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C new file mode 100644 index 0000000000000000000000000000000000000000..21101091a8d15f3b790ce6d385e3b33e95ab8b50 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C @@ -0,0 +1,456 @@ +#include "TTimeData.h" +#include <TICPhysics.h> +#include <TCanvas.h> +#include <TChain.h> +#include <TF1.h> +#include <TFile.h> +#include <TH2.h> +#include <TSpline.h> +#include <TCutG.h> +#include <TStyle.h> +#include <fstream> +#include <vector> +#include "ProfileEvaluator.h" + +using namespace std; +vector<double> TxtToVector(const char *Path); +int GetNumberKey(TFile *infile ,const char* ClassName); + +TSpline3* MakeSpline(TH2F* hInput, Int_t NCallee, double XMin , double + XMax, double YMin, double YMax); +////////////////////////////////////////////////////////////////////////////////////////// +void DECorr(bool cut = false, bool spline = false) { + //=========================================================================================================== + // Loading var + //=========================================================================================================== + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../root/analysis/VamosCalib247.root"); + + TICPhysics* IC = new TICPhysics() ; + TTimeData *Time = new TTimeData(); + double FF_IC_X, FF_IC_Y, FF_V13, Y; + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + chain->SetBranchStatus("FF_IC_Y", true); + chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + chain->SetBranchStatus("FF_V13", true); + chain->SetBranchAddress("FF_V13", &FF_V13); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../mwpc/Toff/output/Toff13.txt"; + const char* Path14 = "../../mwpc/Toff/output/Toff14.txt"; + const char* Path23 = "../../mwpc/Toff/output/Toff23.txt"; + const char* Path24 = "../../mwpc/Toff/output/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + ProfileEvaluator Profile; + Profile.LoadProfile("Output/RatioProfile.root","ICOneZeroProfile"); + + TCutG *CutZ; + TCutG *CutZbis; + TFile *fCut; + if (cut) { + fCut = TFile::Open("Output/CutDeCorr.root"); + CutZbis = (TCutG*)fCut->Get("CutZbis") ; + CutZ = (TCutG*)fCut->Get("CutZ") ; + } + + TFile *fSpline; + TSpline3 *splineDEcorr, *splineDEbis; + fSpline= new TFile("Output/splineDE.root","open"); + splineDEcorr = (TSpline3*) fSpline->Get("SplineDe_0"); + splineDEbis = (TSpline3*) fSpline->Get("SplineDebis"); + + vector<TSpline3*> vsplineDE; + // Get number of spline + int SplineCountDe = 0 ; + TIter next1(fSpline->GetListOfKeys()); + TKey* key1; + + while ((key1=(TKey*)next1())){ + if (std::string(key1->GetClassName()) == "TSpline3"){ + SplineCountDe ++; + } + } + + //Fill spline vector + for (int i =0 ; i<SplineCountDe ; i++){ + vsplineDE.push_back((TSpline3*) fSpline->Get(Form("SplineDe_%d",i))); + } + + //empty backup one + for (int i =0 ; i<SplineCountDe ; i++){ + if (vsplineDE[i]==nullptr) vsplineDE.erase(vsplineDE.begin()+i); + } + + + //Defining output histo + TH2F* hDE_E = new TH2F("DE_E","DE_E",1000,0,22000,1000,0,28000); + TH2F* hDE_E_splined = new TH2F("DE_E_splined","DE_E_splined",1000,0,22000,1000,0,28000); + TH2F* hDE_Ebis = new TH2F("DE_Ebis","DE_Ebis",1000,0,22000,1000,0,24000); + + + TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",1000,-1000,1000,1000,0,22000); + TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,22000); + TH2F* hDE_Y_splined_nocut = new TH2F("DE_Ysplined_nocut","DE_Ysplined_nocut",1000,-1000,1000,1000,0,22000); + TH2F* hIC_Y = new TH2F("IC_Y","IC_Y",1000,-1000,1000,1000,0,22000); + TH2F* hIC_Y_splined = new TH2F("IC_Ysplined","IC_Ysplined",1000,-1000,1000,1000,0,22000); + + + TH2F* hDE_Y_corr = new TH2F("DE_Ycorr","DE_Ycorr",1000,-1000,1000,1000,0,22000); + TH2F* hDE_Y_corr_nocut = new TH2F("DE_Ycorr_nocut","DE_Ycorr_nocut",1000,-1000,1000,1000,0,22000); + + TH2F* hDE_Y_bis = new TH2F("DE_Ybis","DE_Ybis",1000,-1000,1000,1000,0,22000); + TH2F* hDEbis_Y_corr = new TH2F("DE_Ybiscorr","DE_Ybiscorr",1000,-1000,1000,1000,0,22000); + + TH2F* hDE_E_corr = new TH2F("DE_Ecorr","DE_Ecorr",1000,0,22000,1000,0,28000); + TH2F* hDE_Ebis_corr = new TH2F("DE_Ebiscorr","DE_Ebiscorr",1000,0,22000,1000,0,24000); + + TH2F* hDE_V = new TH2F("DE_V","DE_V",1000,0,5,1000,0,28000); + + // Def Lim spline + double Ymin = -1000 , Ymax =1000; + //=========================================================================================================== + // Event Loop + //=========================================================================================================== + int Nentries = chain->GetEntries(); + //int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + + if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>=8){ //only mult 1 event + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + double FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + + Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; + Double_t ICRatioCorr = ICRatio *1.3 / Profile.Evaluate(FF_IC_X,FF_DriftTime,true); + Double_t ICcorr_Y = IC->fIC_raw[0] / 1.3 * Profile.Evaluate(FF_IC_X,FF_DriftTime,true); + + + double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0; + double E =0; + + for (int seg = 0 ; seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){ + if (seg >4){ + E += double(IC->fIC_raw[seg]) ; + } + } + + + + // ********************* DE setter ********************* + double IC1corr = (IC->fIC_raw[1]*(1-0.000686068*FF_IC_Y))*(1-4.88238e-05*FF_IC_Y+7.40395e-06*FF_IC_Y*FF_IC_Y); + double DE_Bis = 0.5*(IC1corr+IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; + + DE = 0.5*(double(IC->fIC_raw[0])+ double(IC->fIC_raw[1]) +double(IC->fIC_raw[2])+ double(IC->fIC_raw[3])) + double(IC->fIC_raw[4]); + DE_splined = 0.5*(ICcorr_Y+ IC->fIC_raw[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; + + //DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; + + + //************* Cut ****************** + bool CutV = abs( FF_V13-3.94)<0.1; + bool CutVbis = abs( FF_V13-3.94)<0.1; + + //bool CutV = true; + //bool CutVbis = true; + + //***********Fill histo************* + + if (FF_DriftTime >Ymin && FF_DriftTime <Ymax ){ + + //*************Init DE_E***************** + hDE_E->Fill(E,DE); + hDE_E_splined->Fill(E,DE_splined); + hDE_Ebis->Fill(E,DE_Bis); + + hDE_V->Fill(FF_V13,DE_splined); + + //******* Coor DE ************ + if (spline== true ){ + DE_corr = DE_splined * splineDEcorr->Eval(0) / splineDEcorr->Eval(FF_DriftTime); + hDE_E_corr->Fill(E,DE_corr); + + DE_Ybis = DE_Bis * splineDEbis->Eval(0) / splineDEbis->Eval(FF_DriftTime); + hDE_Ebis_corr->Fill(E,DE_Ybis); + + } + + else { + DE_corr = DE_splined; + hDE_E_corr->Fill(E,DE_corr); + + DE_Ybis = DE_Bis ; + hDE_Ebis_corr->Fill(E,DE_Ybis); + } + + bool CutCharge ; + + + if (cut == true) CutCharge = CutZ->IsInside(FF_V13,DE_splined); + //bool CutChargeBis = CutZ->IsInside(E,DE_Y_Recur); + //bool CutVbis = CutZbis->IsInside(E,DE_Bis); + // DE_Y in a cut + + + if (cut == true && CutV) { + if ( CutV) { + hDE_Y_corr_nocut->Fill(FF_DriftTime,DE_corr); + hDE_Y_splined_nocut->Fill(FF_DriftTime,DE_splined); + hDE_Y->Fill(FF_DriftTime,DE); + hDE_Y_splined->Fill(FF_DriftTime,DE_splined); + hDE_Y_corr->Fill(FF_DriftTime,DE_corr); + + hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]); + hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y); + } + }//end cut + else { + hDE_Y->Fill(FF_DriftTime,DE); + hDE_Y_splined->Fill(FF_DriftTime,DE_splined); + hDE_Y_corr->Fill(FF_DriftTime,DE_corr); + + hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]); + hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y); + } + + if (cut == true && CutVbis) { + hDE_Y_bis->Fill(Y,DE_Bis); + hDEbis_Y_corr->Fill(Y,DE_Ybis); + } + else{;} + //end cut + }//end cond Y + } // End mult 1 + } //endl loop event + + // making spline + + TSpline3 *splineDE, *osplineDEbis; + if (spline == true){ + splineDE = MakeSpline(hDE_Y_splined,0,Ymin,Ymax,0,23000); + osplineDEbis = MakeSpline(hDE_Y_bis,1,Ymin,Ymax,0,23000); + TFile *fSpline = new TFile("Output/splineDE.root","recreate"); + splineDE->SetName("SplineDe_0"); + splineDE->Write(); + osplineDEbis->SetName("SplineDebis"); + osplineDEbis->Write(); + fSpline->Close(); + } + //=========================================================================================================== + // Drawing histo + //=========================================================================================================== + + gStyle->SetPalette(kRainBow); + + TCanvas* c = new TCanvas("c","c",1500,1000); + c->Divide(2,2); + c->cd(1); + gPad->SetLogz(); + hDE_Y->ProfileX()->Draw(); + c->cd(2); + gPad->SetLogz(); + hDE_Y_splined->ProfileX()->Draw(); + c->cd(3); + gPad->SetLogz(); + hIC_Y->ProfileX()->Draw(); + c->cd(4); + gPad->SetLogz(); + hIC_Y_splined->ProfileX()->Draw(); + + TCanvas *c4 = new TCanvas("c4","c4",1500,1000); + c4->Divide(2); + c4->cd(1); + hDE_Y_splined_nocut->Draw(); + c4->cd(2); + hDE_Y_corr_nocut->Draw(); + + TCanvas *c5 = new TCanvas("c5","c5",1500,1000); + hDE_E->Draw("colz"); + + + + TCanvas *c1 = new TCanvas("c1","c1",1500,1000); + hDE_V->Draw(); + + TCanvas* c2 = new TCanvas("c2","c2",1500,1000); + c2->Divide(3 + 1*spline); + + c2->cd(1); + hDE_E->SetTitle("Unmodified"); + gPad->Modified(); + gPad->Update(); + hDE_E->Draw("colz"); + hDE_E->GetXaxis()->SetTitle("E"); + hDE_E->GetYaxis()->SetTitle("DE"); + + c2->cd(2); + hDE_Ebis->SetTitle("Online"); + gPad->Modified(); + gPad->Update(); + hDE_Ebis->Draw("colz"); + hDE_Ebis->GetXaxis()->SetTitle("E"); + hDE_Ebis->GetYaxis()->SetTitle("DE"); + + c2->cd(3); + hDE_E_splined->SetTitle("IC Corrected in DT"); + gPad->Modified(); + gPad->Update(); + hDE_E_splined->Draw("colz"); + hDE_E_splined->GetXaxis()->SetTitle("E"); + hDE_E_splined->GetYaxis()->SetTitle("DE"); + + if ( spline == true){ + c2->cd(4); + hDE_E_corr->SetTitle("DE Corrected"); + gPad->Modified(); + gPad->Update(); + hDE_E_corr->Draw("colz"); + hDE_E_corr->GetXaxis()->SetTitle("E"); + hDE_E_corr->GetYaxis()->SetTitle("DE"); + } +} // End spline chio XY + + +int GetNumberKey(TFile *infile ,const char* ClassName){ + // Get number of spline + int KeyCount = 0 ; + TIter next(infile->GetListOfKeys()); + TKey* keyFit; + + while ((keyFit=(TKey*)next())){ + if (std::string(keyFit->GetClassName()) == ClassName){ + KeyCount ++; + } + } + + return KeyCount; + +} + +TSpline3* MakeSpline(TH2F* hInput, Int_t NCallee, double XMin = 0 , double + XMax = 1000 , double YMin=0 , double YMax = 100) { + + TSpline3* gspline; + + TH1F* hProfile; + TH1F* pfx; // extended hProfile + + TCanvas* canfit = new TCanvas(Form("CanSpline_%02d",NCallee), + Form("canfit_%02d",NCallee), 0, 0, 1000, 500); + + + //=========================================================================================================== + // Init profile + //=========================================================================================================== + + // Create the TProfile + hProfile = (TH1F*)hInput->ProfileX(); + hProfile->SetLineWidth(2); + hProfile->SetDirectory(0); + canfit->cd(); + + hProfile->GetYaxis()->SetRangeUser(YMin, YMax); + hProfile->Draw(); + //=========================================================================================================== + // First and last bin to get to 6k + // event get promoted + //=========================================================================================================== + int FirstBin, LastBin; + double Treshold = 0; + for (int bin =1 ; bin<hProfile->GetNbinsX(); bin++) { + FirstBin = bin; + if (hProfile->GetBinLowEdge(bin)> XMin) break; + } + for (int bin = hProfile->GetNbinsX(); bin>1 ; bin--) { + LastBin = bin; + if (hProfile->GetBinLowEdge(bin)< XMax) break; + } + //=========================================================================================================== + // Init Extended profile function + //=========================================================================================================== + // Create the extended TProfile + pfx = new TH1F( + Form("pfx_%02d", Int_t(NCallee/2)), Form("pfx_%02d", Int_t(NCallee/2)), hProfile->GetNbinsX(), hProfile->GetBinLowEdge(1), + hProfile->GetBinLowEdge(hProfile->GetNbinsX()) + hProfile->GetBinWidth(hProfile->GetNbinsX())); + pfx->SetLineColor(8); + pfx->SetDirectory(0); + //=========================================================================================================== + // Fill extended profile + //=========================================================================================================== + + // fill the extended TProfile + float newval, lastval, lasterr; + for (int bin = 1; bin <= FirstBin; bin++) { + newval = 0; + pfx->SetBinContent(bin, newval); + } + + + for (int bin = FirstBin; bin <= LastBin; bin++) { + newval = hProfile->GetBinContent(bin); + if (newval != 0) { + pfx->SetBinContent(bin, newval); + pfx->SetBinError(bin, hProfile->GetBinError(bin)); + lastval = newval; + lasterr = hProfile->GetBinError(bin); + } + else { + pfx->SetBinContent(bin, lastval); + pfx->SetBinError(bin, lasterr); + } + } + pfx->Draw("same"); + + gspline = new TSpline3(pfx); + gspline->SetName(Form("fspline_%d", NCallee + 1)); + + return gspline; + +} // end makespline + +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root new file mode 100644 index 0000000000000000000000000000000000000000..e181a9879429be4a95e61fd1d388837306f078a2 Binary files /dev/null and b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root differ diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..ae505d9092a2a100ef1a1e6f5b3368d68e9fb6f8 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/ReadMe.md @@ -0,0 +1 @@ +# Put here the output profile diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root new file mode 100644 index 0000000000000000000000000000000000000000..330cfde1c7a3895b11fcdc11f57c399d884723ca Binary files /dev/null and b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root differ diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/ProfileEvaluator.h b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/ProfileEvaluator.h new file mode 100644 index 0000000000000000000000000000000000000000..0994ba971a8eb0dc2bb445420355b322baf2af80 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/ProfileEvaluator.h @@ -0,0 +1,127 @@ +#ifndef PROFILE_EVAL +#define PROFILE_EVAL + +#include <TFile.h> +#include <TProfile2D.h> +#include <iostream> +using namespace std; + +class ProfileEvaluator { + private: + TFile* fFile; + TProfile2D* fProfile; + + public: + + //***********************************************************// + + ProfileEvaluator() : fFile(nullptr), fProfile(nullptr) {} + + //***********************************************************// + + bool LoadProfile(const char* filename, const char* profname) { + fFile = TFile::Open(filename, "READ"); + if (!fFile || fFile->IsZombie()) return false; + + fProfile = (TProfile2D*)fFile->Get(profname)->Clone("Profile"); + fProfile->SetDirectory(0); + return fProfile != nullptr; + } + + //***********************************************************// + + Double_t Evaluate(Double_t x, Double_t y, Bool_t useInterpolation = true) { + if (!fProfile) return 0.0; + + Int_t binx = fProfile->GetXaxis()->FindBin(x); + Int_t biny = fProfile->GetYaxis()->FindBin(y); + + if (!useInterpolation) return fProfile->GetBinContent(binx, biny); + + //Def Bin dist + Double_t BinDistX = fProfile->GetXaxis()->GetBinCenter(2) - fProfile->GetXaxis()->GetBinCenter(1); + Double_t BinDistY = fProfile->GetYaxis()->GetBinCenter(2) - fProfile->GetYaxis()->GetBinCenter(1); + + // Normalisation var + Double_t norma = 0; + + // Fetch Bin Center for surrounding 3 by 3 bin and value + vector<Double_t> Cx(3) , Cy(3) ; + vector<vector<Double_t>> Q(3, vector<Double_t>(3)), W(3,vector<Double_t>(3)); + + for (int i = -1 ; i<=1 ; i++){ + // Loading nearby bins + int TempX = binx +i ; + int PosX = i + 1 ; + + // Edge cases handling + if (TempX < 1) TempX = 1 ; + if (TempX > fProfile->GetNbinsX()) TempX = fProfile->GetNbinsX() ; + + // Loading center + Cx.at(PosX) = fProfile->GetXaxis()->GetBinCenter(TempX); + //Normat that we use POSX here + + // Loading value and weight + for (int j = -1 ; j<=1 ; j++){ + // Need to translate to acess the vector + int PosY = j + 1 ; + int TempY = biny + j ; + + if (TempY < 1) TempY = 1 ; + if (TempY > fProfile->GetNbinsY()) TempY = fProfile->GetNbinsY() ; + + Cy.at(PosY) = fProfile->GetYaxis()->GetBinCenter(TempY); + + // Loading value + Q.at(PosX).at(PosY) = fProfile->GetBinContent(TempX,TempY); + + // Calculating weight + Double_t Wx = 0 , Wy = 0 ; + Wx = 1 - ( abs( x - Cx.at(PosX)) / (BinDistX) ); + Wy = 1 - ( abs( y - Cy.at(PosY)) / (BinDistY) ); + + //handling max range + if(Wx < 0 || Wy < 0) W.at(PosX).at(PosY) = 0; + else W.at(PosX).at(PosY) = Wx * Wy; + // Verifiy that sum of the weight is 1 + norma += W.at(PosX).at(PosY) ; + } + } + + // now just calculate the return value + + Double_t InterPol = 0 ; + + for (int PosX = 0 ; PosX <= 2 ; PosX ++ ){ + for (int PosY = 0 ; PosY <= 2 ; PosY ++ ){ + InterPol += Q.at(PosX).at(PosY) * W.at(PosX).at(PosY); + } + } + return InterPol; + } + + //***********************************************************// + + void PrintInfo() { + if (!fProfile) return; + printf("Profile: %s\n", fProfile->GetName()); + printf("X bins: %d, range: [%.2f, %.2f]\n", + fProfile->GetNbinsX(), + fProfile->GetXaxis()->GetXmin(), + fProfile->GetXaxis()->GetXmax()); + printf("Y bins: %d, range: [%.2f, %.2f]\n", + fProfile->GetNbinsY(), + fProfile->GetYaxis()->GetXmin(), + fProfile->GetYaxis()->GetXmax()); + } + + //***********************************************************// + + TProfile2D* GetProfile() { return fProfile; } + + //***********************************************************// + ~ProfileEvaluator() { + } +}; +#endif diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C new file mode 100644 index 0000000000000000000000000000000000000000..b8fda7cd0ad7bd7aef63feefbaef0ff10fb1058e --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C @@ -0,0 +1,128 @@ +#include "TICPhysics.h" +#include "TTimeData.h" +#include <TChain.h> +#include <TFile.h> +#include <TH2.h> +#include <TH3.h> +#include <TStyle.h> +#include <TProfile2D.h> +#include <chrono> +vector<double> TxtToVector(const char *Path); + +void VerifCorrelation(){ + + //=========================================================================================================== + // Loading var + //=========================================================================================================== + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../root/analysis/VamosCalib247.root"); + + TTimeData *Time = new TTimeData(); + TICPhysics* IC = new TICPhysics() ; + double FF_IC_X, FF_IC_Y, FF_V13, FF_DriftTime; + + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../mwpc/Toff/output/Toff13.txt"; + const char* Path14 = "../../mwpc/Toff/output/Toff14.txt"; + const char* Path23 = "../../mwpc/Toff/output/Toff23.txt"; + const char* Path24 = "../../mwpc/Toff/output/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + chain->SetBranchStatus("FF_IC_Y", true); + chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + + TH3F *ICXY = new TH3F("ICXY","ICXY",100,-550,400,100,-1000,1000,100,0,2); + TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-550.0,400.0,100,-900.0,500.0); + + int Nentries = chain->GetEntries(); + //int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + + if(Time->GetMWPC13Mult()==1 && IC->fIC_raw[8] >0){ + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + + + Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; + + if(IC->fIC_raw[8] >0 && ICRatio <= 3 && ICRatio >0.1 ) { + ICXY->Fill(FF_IC_X,FF_DriftTime,ICRatio); + Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio); + } + } + + } + gStyle->SetCanvasPreferGL(true); + TCanvas *c = new TCanvas("c","c"); + gStyle->SetPalette(kRainBow); + ICXY->SetXTitle("X"); + ICXY->SetYTitle("DriftTime"); + ICXY->SetZTitle("RatioIC"); + ICXY->SetMinimum(0); + ICXY->Draw("GL"); // Configure the 3D view + + // Update the canvas + c->Update(); + + TCanvas *c1 = new TCanvas("c1","c1"); + gStyle->SetPalette(kRainBow); + Pxyz->SetXTitle("X"); + Pxyz->SetYTitle("DriftTime"); + Pxyz->SetZTitle("RatioIC"); + Pxyz->SetMinimum(1.0); + Pxyz->SetMaximum(1.5); + Pxyz->Draw("GL SURF2"); // Configure the 3D view + + + TFile *ofile = new TFile("Output/RatioProfile.root","recreate"); + Pxyz->Write(); +} + +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} diff --git a/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C index 5e6eb7d3eea92eeefe6356653819a83dc8bea771..2b4463b219c2d96a623bbb7a2d64441778a3dfed 100644 --- a/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C +++ b/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C @@ -201,8 +201,8 @@ void DECorr(bool cut = false, bool spline = false) { double IC1corr = (IC->fIC_raw[1]*(1-0.000686068*FF_IC_Y))*(1-4.88238e-05*FF_IC_Y+7.40395e-06*FF_IC_Y*FF_IC_Y); double DE_Bis = 0.5*(IC1corr+IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; - DE = 0.5*(ICcorr_Y.at(0)+ IC->fIC_raw[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; - DE_splined = 0.5*(ICcorr_Y[0]+ ICcorr_Y[1] +ICcorr_Y[2]+ICcorr_Y[3])+ICcorr_Y[4]; + DE = 0.5*(IC->fIC_raw[0]+ IC->fIC_raw[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; + DE_splined = 0.5*(ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; //DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; @@ -222,7 +222,7 @@ void DECorr(bool cut = false, bool spline = false) { hDE_E_splined->Fill(E,DE_splined); hDE_Ebis->Fill(E,DE_Bis); - hDE_V->Fill(FF_V13,DE_splined); + hDE_V->Fill(FF_V13,DE); //******* Coor DE ************ if (spline== true ){ @@ -248,23 +248,33 @@ void DECorr(bool cut = false, bool spline = false) { hDE_Ebis_corr->Fill(E,DE_Ybis); } - bool CutCharge = CutZ->IsInside(FF_V13,DE_splined); + bool CutCharge; + if (cut == true) { + CutCharge = CutZ->IsInside(FF_V13,DE); + } //bool CutChargeBis = CutZ->IsInside(E,DE_Y_Recur); //bool CutVbis = CutZbis->IsInside(E,DE_Bis); // DE_Y in a cut hDE_Y_corr_nocut->Fill(FF_IC_Y,DE); hDE_Y_splined_nocut->Fill(FF_IC_Y,DE_splined); - if (cut == true && CutV && CutCharge) { - + if (cut == true ) { + if (CutV && CutCharge){ + hDE_Y->Fill(FF_IC_Y,DE); + hDE_Y_splined->Fill(FF_IC_Y,DE_splined); + hDE_Y_corr->Fill(FF_IC_Y,DE_corr); + + hIC_Y->Fill(FF_IC_Y,IC->fIC_raw[1]); + hIC_Y_splined->Fill(FF_IC_Y,ICcorr_Y.at(1)); + } + }//end cut + else { hDE_Y->Fill(FF_IC_Y,DE); hDE_Y_splined->Fill(FF_IC_Y,DE_splined); hDE_Y_corr->Fill(FF_IC_Y,DE_corr); hIC_Y->Fill(FF_IC_Y,IC->fIC_raw[1]); - hIC_Y_splined->Fill(FF_IC_Y,ICcorr_Y.at(1)); - }//end cut - else {;} + hIC_Y_splined->Fill(FF_IC_Y,ICcorr_Y.at(1));} if (cut == true && CutVbis) { hDE_Y_bis->Fill(FF_IC_Y,DE_Bis); @@ -313,7 +323,7 @@ void DECorr(bool cut = false, bool spline = false) { hDE_Y_splined_nocut->ProfileX()->Draw(); c4->cd(2); hDE_Y_corr_nocut->ProfileX()->Draw(); - + TCanvas *c1 = new TCanvas("c1","c1",1500,1000); diff --git a/Projects/AlPhaPha/2024/macro/chio/YCalibration/Legacy/PlotOnline.C b/Projects/AlPhaPha/2024/macro/chio/YCalibration/PlotOnline.C similarity index 52% rename from Projects/AlPhaPha/2024/macro/chio/YCalibration/Legacy/PlotOnline.C rename to Projects/AlPhaPha/2024/macro/chio/YCalibration/PlotOnline.C index 113fa6f5223d4488fc2ea7a43620e05bc4844b4a..d301d3ccd30b950fa2f91f2c89aecc5d17b330a5 100644 --- a/Projects/AlPhaPha/2024/macro/chio/YCalibration/Legacy/PlotOnline.C +++ b/Projects/AlPhaPha/2024/macro/chio/YCalibration/PlotOnline.C @@ -1,4 +1,6 @@ +#include <TAxis.h> +#include <TCanvas.h> #include <TF1.h> #include <TFile.h> #include <TSpline.h> @@ -9,7 +11,11 @@ void PlotOnline(){ TFile *fSplineIC = new TFile("Output/spline_P2P_2024.root","open"); - TSpline3 *spline_X = (TSpline3 *)fSplineIC->Get("fspline_IC1_Y"); + TSpline3 *spline_Y = (TSpline3 *)fSplineIC->Get("fspline_IC1_Y"); + TCanvas *c = new TCanvas("c","c"); f1->Draw(); + f1->SetTitle("Lucas correction"); + f1->GetXaxis()->SetTitle("Y"); + f1->GetYaxis()->SetTitle("De Correction"); } diff --git a/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C b/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C index b7f9f49fdc086db467ce4415e16816398b183b20..2819b39f1c8a617e6f030459944c76a7ce656093 100644 --- a/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C +++ b/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C @@ -53,7 +53,7 @@ void SplineChioP2P() { NCallSpline+=1; SplineAllIC.at(1)= (SplineICurrent); // - SplineAllIC.erase(SplineAllIC.begin() + 1); + ///SplineAllIC.erase(SplineAllIC.begin() + 1); ///activate this to not make the //spline of IC1 @@ -123,7 +123,7 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC // Input and setters TChain* chain = new TChain("PhysicsTree"); - chain->Add("../../../root/analysis/VamosCalib241.root"); + chain->Add("../../../root/analysis/VamosCalib247.root"); TICPhysics* IC = new TICPhysics() ; double FF_IC_X, FF_IC_Y; @@ -180,8 +180,8 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC // Beginning loop on entries //=========================================================================================================== - int Nentries = chain->GetEntries(); - //int Nentries = 1000000; + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { @@ -262,7 +262,7 @@ vector<vector<TH2F*>>HistoFillerICcorr(int segment, vector<vector<TSpline3*>> Sp // Input and setters TChain* chain = new TChain("PhysicsTree"); - chain->Add("../../../root/analysis/VamosCalib241.root"); + chain->Add("../../../root/analysis/VamosCalib247.root"); TICPhysics* IC = new TICPhysics() ; double FF_IC_X, FF_IC_Y; diff --git a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx index 4d01c7cb3ae2c3efe91f126dd353c4580712d7d0..67cdf48e7998a346a967d7822d3081dec826d17d 100644 --- a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx +++ b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx @@ -1,3 +1,4 @@ +#include "TICPhysics.h" #include "TTimeData.h" #include <TCanvas.h> #include <TChain.h> @@ -27,7 +28,7 @@ void ToffGenerator(bool Create = true ){ UShort_t S13[20] , S14[20] , S23[20] , S24[20]; TTimeData *Time = new TTimeData(); - + TICPhysics *IC = new TICPhysics(); chain->SetBranchStatus("MTOF_FP0_T0VN", true); chain->SetBranchAddress("MTOF_FP0_T0VN", &S13); @@ -44,6 +45,8 @@ void ToffGenerator(bool Create = true ){ chain->SetBranchStatus("Time", true); chain->SetBranchAddress("Time", &Time); + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); //=========================================================================================================== // Histograms //=========================================================================================================== @@ -53,6 +56,12 @@ void ToffGenerator(bool Create = true ){ TH2F *hToff23; TH2F *hToff24; + TH2F *hToffOnline13; + TH2F *hToffOnline14; + TH2F *hToffOnline23; + TH2F *hToffOnline24; + + double xmin[4], xmax[4]; double ymin[4], ymax[4]; int binx = 20 , biny = 400; @@ -62,6 +71,9 @@ void ToffGenerator(bool Create = true ){ xmin[2] = 0 ; xmax[2] = 20 ; ymin[2] = -10 ; ymax[2] = 10 ; xmin[3] = 0 ; xmax[3] = 20 ; ymin[3] = -10 ; ymax[3] = 10 ; + // Toff from aligning AoQ + double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3}; + if (Create == true){ hToff13 = new TH2F("Toff13","Toff13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]); @@ -69,6 +81,12 @@ void ToffGenerator(bool Create = true ){ hToff23 = new TH2F("Toff23","Toff23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]); hToff24 = new TH2F("Toff24","Toff24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]); + hToffOnline13 = new TH2F("ToffOnline13","ToffOnline13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]); + hToffOnline14 = new TH2F("ToffOnline14","ToffOnline14",binx ,xmin[1] , xmax[1], biny, ymin[1], ymax[1]); + hToffOnline23 = new TH2F("ToffOnline23","ToffOnline23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]); + hToffOnline24 = new TH2F("ToffOnline24","ToffOnline24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]); + + //=========================================================================================================== // Loop on entries //=========================================================================================================== @@ -94,26 +112,30 @@ void ToffGenerator(bool Create = true ){ M14 = Time->GetMWPC14Mult(); M23 = Time->GetMWPC23Mult(); M24 = Time->GetMWPC24Mult(); - - + if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){ vector<int> Pos = SortSection(S13); - hToff13->Fill(S13[0],Time->GetTime_MWPC13(Pos[0]) - Time->GetTime_MWPC13(Pos[1])); + hToff13->Fill(S13[0], Time->GetTime_MWPC13(Pos[0]) - Time->GetTime_MWPC13(Pos[1]) ); + + hToffOnline13->Fill(S13[0], (Time->GetTime_MWPC13(Pos[0]) - Toff[S13[0]]) -( Time->GetTime_MWPC13(Pos[1]) -Toff[S13[1]] )); } if (M23 == 2 && (abs(S23[0]-S23[1]) == 1)){ vector<int> Pos = SortSection(S23); hToff23->Fill(S23[0],Time->GetTime_MWPC23(Pos[0]) - Time->GetTime_MWPC23(Pos[1])); + hToffOnline23->Fill(S23[0],(Time->GetTime_MWPC23(Pos[0]) - Toff[S23[0]]) -( Time->GetTime_MWPC23(Pos[1]) -Toff[S23[1]] ) ); } if (M14 == 2 && (abs(S14[0]-S14[1]) == 1)){ vector<int> Pos = SortSection(S14); hToff14->Fill(S14[0],Time->GetTime_MWPC14(Pos[0]) - Time->GetTime_MWPC14(Pos[1])); + hToffOnline14->Fill(S14[0],(Time->GetTime_MWPC14(Pos[0]) - Toff[S14[0]]) -( Time->GetTime_MWPC14(Pos[1]) -Toff[S14[1]] ) ); } if (M24 == 2 && (abs(S24[0]-S24[1]) == 1)){ vector<int> Pos = SortSection(S24); hToff24->Fill(S24[0],Time->GetTime_MWPC24(Pos[0]) - Time->GetTime_MWPC24(Pos[1])); + hToffOnline24->Fill(S24[0],(Time->GetTime_MWPC24(Pos[0]) - Toff[S24[0]]) -( Time->GetTime_MWPC24(Pos[1]) -Toff[S24[1]] ) ); } } // End loop event @@ -122,6 +144,11 @@ void ToffGenerator(bool Create = true ){ hToff14->Write(); hToff23->Write(); hToff24->Write(); + + hToffOnline13->Write(); + hToffOnline14->Write(); + hToffOnline23->Write(); + hToffOnline24->Write(); }// end if create else { @@ -131,6 +158,12 @@ void ToffGenerator(bool Create = true ){ hToff14 = (TH2F*)in->Get("Toff14"); hToff23 = (TH2F*)in->Get("Toff23"); hToff24 = (TH2F*)in->Get("Toff24"); + + hToffOnline13 = (TH2F*)in->Get("ToffOnline13"); + hToffOnline14 = (TH2F*)in->Get("ToffOnline14"); + hToffOnline23 = (TH2F*)in->Get("ToffOnline23"); + hToffOnline24 = (TH2F*)in->Get("ToffOnline24"); + } int MinX = 2; @@ -371,44 +404,27 @@ void ToffGenerator(bool Create = true ){ if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){ - vector<int> Pos = SortSection(S13); - - if (S13[0] == 0) hCorrToff13->Fill(S13[0],Time->GetTime_MWPC13(Pos[0]) - (Time->GetTime_MWPC13(Pos[1]) + Toff13.at(0) )); - - else{ - hCorrToff13->Fill(S13[0],(Time->GetTime_MWPC13(Pos[0]) + Toff13.at(S13[0]-1)) - (Time->GetTime_MWPC13(Pos[1]) + Toff13.at(S13[1]-1))); - } + vector<int> Pos = SortSection(S13); + hCorrToff13->Fill(S13[0],(Time->GetTime_MWPC13(Pos[0]) - double(Time->GetTS_MWPC13(Pos[0]))+ Toff13.at(S13[0])) - (Time->GetTime_MWPC13(Pos[1]) - double(Time->GetTS_MWPC13(Pos[1]))+ Toff13.at(S13[1]))); } if (M23 == 2 && (abs(S23[0]-S23[1]) == 1)){ vector<int> Pos = SortSection(S23); - if (S23[0] == 0) hCorrToff23->Fill(S23[0],Time->GetTime_MWPC23(Pos[0]) - (Time->GetTime_MWPC23(Pos[1]) + Toff23.at(0) )); - - else{ - hCorrToff23->Fill(S23[0],(Time->GetTime_MWPC23(Pos[0]) + Toff23.at(S23[0]-1)) - (Time->GetTime_MWPC23(Pos[1]) + Toff23.at(S23[1]-1))); - } + hCorrToff23->Fill(S23[0],(Time->GetTime_MWPC23(Pos[0]) + Toff23.at(S23[0])) - (Time->GetTime_MWPC23(Pos[1]) + Toff23.at(S23[1]))); } if (M14 == 2 && (abs(S14[0]-S14[1]) == 1)){ vector<int> Pos = SortSection(S14); - if (S14[0] == 0) hCorrToff14->Fill(S14[0],Time->GetTime_MWPC14(Pos[0]) - (Time->GetTime_MWPC14(Pos[1]) + Toff14.at(0) )); - - else{ - hCorrToff14->Fill(S14[0],(Time->GetTime_MWPC14(Pos[0]) + Toff14.at(S14[0]-1)) - (Time->GetTime_MWPC14(Pos[1]) + Toff14.at(S14[1]-1))); - } + hCorrToff14->Fill(S14[0],(Time->GetTime_MWPC14(Pos[0]) + Toff14.at(S14[0])) - (Time->GetTime_MWPC14(Pos[1]) + Toff14.at(S14[1]))); } if (M24 == 2 && (abs(S24[0]-S24[1]) == 1)){ vector<int> Pos = SortSection(S24); - if (S24[0] == 0) hCorrToff24->Fill(S24[0],Time->GetTime_MWPC24(Pos[0]) - (Time->GetTime_MWPC24(Pos[1]) + Toff24.at(0) )); - - else{ - hCorrToff24->Fill(S24[0],(Time->GetTime_MWPC24(Pos[0]) + Toff24.at(S24[0]-1)) - (Time->GetTime_MWPC24(Pos[1]) + Toff24.at(S24[1]-1))); - } + hCorrToff24->Fill(S24[0],(Time->GetTime_MWPC24(Pos[0]) + Toff24.at(S24[0])) - (Time->GetTime_MWPC24(Pos[1]) + Toff24.at(S24[1]))); } @@ -419,39 +435,49 @@ void ToffGenerator(bool Create = true ){ //=========================================================================================================== TCanvas *c1 = new TCanvas("c1","c1"); - c1->Divide(2); + c1->Divide(3); c1->cd(1); hToff13->Draw("colz"); c1->cd(2); hCorrToff13->Draw("colz"); + c1->cd(3); + hToffOnline13->Draw("colz"); + TCanvas *c2 = new TCanvas("c2","c2"); - c2->Divide(2); + c2->Divide(3); c2->cd(1); hToff23->Draw("colz"); c2->cd(2); hCorrToff23->Draw("colz"); + c2->cd(3); + hToffOnline23->Draw("colz"); TCanvas *c3 = new TCanvas("c3","c3"); - c3->Divide(2); + c3->Divide(3); c3->cd(1); hToff14->Draw("colz"); c3->cd(2); hCorrToff14->Draw("colz"); + c3->cd(3); + hToffOnline14->Draw("colz"); TCanvas *c4 = new TCanvas("c4","c4"); - c4->Divide(2); + c4->Divide(3); c4->cd(1); hToff24->Draw("colz"); c4->cd(2); hCorrToff24->Draw("colz"); + c4->cd(3); + hToffOnline24->Draw("colz"); + } vector<int> SortSection(UShort_t STargFocal[2]){ @@ -479,6 +505,7 @@ vector<double> ToffCalc(vector<double> ToffP2P){ vector<double> res; double Sum = 0; + res.push_back(Sum); // first section for (int i=0; i<ToffP2P.size() ; i++){ Sum += ToffP2P.at(i); res.push_back(Sum); diff --git a/Projects/AlPhaPha/conversion/2024/convert.C b/Projects/AlPhaPha/conversion/2024/convert.C index 7346962e63dcb52699e88557745e089312eea49b..18862b4db7ae08b352682ad41b75c31096815830 100644 --- a/Projects/AlPhaPha/conversion/2024/convert.C +++ b/Projects/AlPhaPha/conversion/2024/convert.C @@ -86,15 +86,17 @@ void convert(int run=204){ for (int i=0; i<MTOF_FP0_T0VM;i++){ m_time->SetTS_MWPC13(MTOF_FP0_T0VTS[i]); m_time->SetTime_MWPC13(MTOF_FP0_T0V[i]); + m_time->SetSection_MWPC3(MTOF_FP0_T0VN[i]); } for (int i=0; i<MTOF_FP0_T1VM;i++){ - m_time->SetTS_MWPC14(MTOF_FP0_T1VTS[i]); - m_time->SetTime_MWPC14(MTOF_FP0_T1V[i]); + m_time->SetTS_MWPC23(MTOF_FP0_T1VTS[i]); + m_time->SetTime_MWPC23(MTOF_FP0_T1V[i]); } for (int i=0; i<MTOF_FP1_T0VM;i++){ - m_time->SetTS_MWPC23(MTOF_FP1_T0VTS[i]); - m_time->SetTime_MWPC23(MTOF_FP1_T0V[i]); + m_time->SetTS_MWPC14(MTOF_FP1_T0VTS[i]); + m_time->SetTime_MWPC14(MTOF_FP1_T0V[i]); + m_time->SetSection_MWPC4(MTOF_FP1_T0VN[i]); } for (int i=0; i<MTOF_FP1_T1VM;i++){ @@ -273,6 +275,7 @@ void InitInputTree(){ input_tree->SetBranchStatus("ICRawM","true"); input_tree->SetBranchAddress("ICRawM",&ICRawM); + // FPMW0-X input_tree->SetBranchStatus("FPMW0_XRawM","true"); input_tree->SetBranchAddress("FPMW0_XRawM",&FPMW0_XRawM); diff --git a/Projects/AlPhaPha/conversion/2024/convert.h b/Projects/AlPhaPha/conversion/2024/convert.h index 5a0411fd19594b54c7cf5a43614ab62e29d6e715..a53108fc74eba43b2f45270e9e15c3019f82671e 100644 --- a/Projects/AlPhaPha/conversion/2024/convert.h +++ b/Projects/AlPhaPha/conversion/2024/convert.h @@ -20,10 +20,10 @@ Float_t MTOF_FP1_T0V[92]; Float_t MTOF_FP0_T1V[92]; Float_t MTOF_FP1_T1V[92]; -Int_t MTOF_FP0_T0VN[20]; -Int_t MTOF_FP1_T0VN[20]; -Int_t MTOF_FP0_T1VN[20]; -Int_t MTOF_FP1_T1VN[20]; +short MTOF_FP0_T0VN[20]; +short MTOF_FP1_T0VN[20]; +short MTOF_FP0_T1VN[20]; +short MTOF_FP1_T1VN[20]; long MTOF_FP0_T0VTS[20]; long MTOF_FP0_T1VTS[20]; @@ -49,7 +49,7 @@ ULong64_t fPISTA_TS_sec; ULong64_t PISTA_TS; // IC // -float IC[11]; +Float_t IC[11]; long ICRawTS[11]; int ICRawM; diff --git a/Projects/GRIT_AGATA_GANIL/Analysis.cxx b/Projects/GRIT_AGATA_GANIL/Analysis.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b44a4895ac303d187383a3df9ae21c4268020b9a --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/Analysis.cxx @@ -0,0 +1,198 @@ +/***************************************************************************** + * Copyright (C) 2009-2014 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * + * * + * Creation Date : march 2025 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Class describing the property of an Analysis object * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <iostream> +using namespace std; + +#include "Analysis.h" +#include "NPAnalysisFactory.h" +#include "NPDetectorManager.h" +#include "NPFunction.h" +#include "NPOptionManager.h" +//////////////////////////////////////////////////////////////////////////////// +Analysis::Analysis() {} +//////////////////////////////////////////////////////////////////////////////// +Analysis::~Analysis() {} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::Init() { + if (NPOptionManager::getInstance()->HasDefinition("simulation")) { + cout << "Considering input data as simulation" << endl; + simulation = true; + } + else { + cout << "Considering input data as real" << endl; + simulation = false; + } + agata_zShift = 51 * mm; + + // initialize input and output branches + if (simulation) { + Initial = new TInitialConditions(); + ReactionConditions = new TReactionConditions(); + } + + InitOutputBranch(); + InitInputBranch(); + // get MUST2 and Gaspard objects + GPDTrack = (GaspardTracker*)m_DetectorManager->GetDetector("GaspardTracker"); + + // get reaction information + reaction.ReadConfigurationFile(NPOptionManager::getInstance()->GetReactionFile()); + OriginalBeamEnergy = reaction.GetBeamEnergy(); + // target thickness + TargetThickness = m_DetectorManager->GetTargetThickness(); + string TargetMaterial = m_DetectorManager->GetTargetMaterial(); + // Cryo target case + WindowsThickness = 0; // m_DetectorManager->GetWindowsThickness(); + string WindowsMaterial = ""; // m_DetectorManager->GetWindowsMaterial(); + + // energy losses + string light = NPL::ChangeNameToG4Standard(reaction.GetNucleus3()->GetName()); + string beam = NPL::ChangeNameToG4Standard(reaction.GetNucleus1()->GetName()); + LightTarget = NPL::EnergyLoss(light + "_" + TargetMaterial + ".G4table", "G4Table", 100); + // LightAl = NPL::EnergyLoss(light + "_Al.G4table", "G4Table", 100); + LightSi = NPL::EnergyLoss(light + "_Si.G4table", "G4Table", 100); + BeamCD2 = NPL::EnergyLoss(beam + "_" + TargetMaterial + ".G4table", "G4Table", 100); + + FinalBeamEnergy = BeamCD2.Slow(OriginalBeamEnergy, TargetThickness * 0.5, 0); + // FinalBeamEnergy = OriginalBeamEnergy; + cout << "Original beam energy: " << OriginalBeamEnergy << " MeV Mid-target beam energy: " << FinalBeamEnergy + << "MeV " << endl; + reaction.SetBeamEnergy(FinalBeamEnergy); + + if (WindowsThickness) { + cout << "Cryogenic target with windows" << endl; + BeamWindow = new NPL::EnergyLoss(beam + "_" + WindowsMaterial + ".G4table", "G4Table", 100); + LightWindow = new NPL::EnergyLoss(light + "_" + WindowsMaterial + ".G4table", "G4Table", 100); + } + + else { + BeamWindow = NULL; + LightWindow = NULL; + } + + // initialize various parameters + Rand = TRandom3(); + DetectorNumber = 0; + ThetaNormalTarget = 0; + ThetaM2Surface = 0; + ThetaMGSurface = 0; + Si_E_M2 = 0; + CsI_E_M2 = 0; + Energy = 0; + ThetaGDSurface = 0; + X = 0; + Y = 0; + Z = 0; + dE = 0; + BeamDirection = TVector3(0, 0, 1); + nbTrack = 0; +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::TreatEvent() { + // Reinitiate calculated variable + ReInitValue(); + double XTarget, YTarget; + TVector3 BeamDirection; + XTarget = 0; + YTarget = 0; + BeamDirection = TVector3(0, 0, 1); + OriginalELab = ReactionConditions->GetKineticEnergy(0); + OriginalThetaLab = ReactionConditions->GetTheta(0); + BeamEnergy = ReactionConditions->GetBeamEnergy(); + BeamImpact = TVector3(XTarget, YTarget, 0); + // determine beam energy for a randomized interaction point in target + // 1% FWHM randominastion (E/100)/2.35 + // reaction.SetBeamEnergy(Rand.Gaus(ReactionConditions->GetIncidentFinalKineticEnergy(),ReactionConditions->GetIncidentFinalKineticEnergy()/235)); + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////// GASPARD ////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + if ((ELab = GPDTrack->GetEnergyDeposit()) > 0) { + TVector3 HitDirection = GPDTrack->GetPositionOfInteraction() - BeamImpact; + ELab = GPDTrack->GetEnergyDeposit(); + ThetaLab = HitDirection.Angle(BeamDirection); + ELab = LightTarget.EvaluateInitialEnergy(ELab, TargetThickness * 0.5, 0); + + // Part 3 : Excitation Energy Calculation + Ex = reaction.ReconstructRelativistic(ELab, ThetaLab); + + // Part 4 : Theta CM Calculation + ThetaCM = reaction.EnergyLabToThetaCM(ELab, ThetaLab) / deg; + ThetaLab = ThetaLab / deg; + } +} +//////////////////////////////////////////////////////////////////////////////// +void Analysis::End() {} +//////////////////////////////////////////////////////////////////////////////// +void Analysis::InitOutputBranch() { + RootOutput::getInstance()->GetTree()->Branch("Ex", &Ex, "Ex/D"); + RootOutput::getInstance()->GetTree()->Branch("ELab", &ELab, "ELab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaLab", &ThetaLab, "ThetaLab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaCM", &ThetaCM, "ThetaCM/D"); + RootOutput::getInstance()->GetTree()->Branch("Run", &Run, "Run/I"); + RootOutput::getInstance()->GetTree()->Branch("X", &X, "X/D"); + RootOutput::getInstance()->GetTree()->Branch("Y", &Y, "Y/D"); + RootOutput::getInstance()->GetTree()->Branch("Z", &Z, "Z/D"); +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::InitInputBranch() { + // RootInput:: getInstance()->GetChain()->SetBranchAddress("GATCONF",&vGATCONF); + RootInput::getInstance()->GetChain()->SetBranchStatus("InitialConditions", true); + RootInput::getInstance()->GetChain()->SetBranchStatus("fIC_*", true); + RootInput::getInstance()->GetChain()->SetBranchAddress("InitialConditions", &Initial); + RootInput::getInstance()->GetChain()->SetBranchStatus("ReactionConditions", true); + RootInput::getInstance()->GetChain()->SetBranchStatus("fRC_*", true); + RootInput::getInstance()->GetChain()->SetBranchAddress("ReactionConditions", &ReactionConditions); +} +//////////////////////////////////////////////////////////////////////////////// +void Analysis::ReInitValue() { + Ex = -1000; + ELab = -1000; + BeamEnergy = -1000; + ThetaLab = -1000; + ThetaCM = -1000; + X = -1000; + Y = -1000; + Z = -1000; + dE = -1000; +} + +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the AnalysisFactory // +//////////////////////////////////////////////////////////////////////////////// +NPL::VAnalysis* Analysis::Construct() { return (NPL::VAnalysis*)new Analysis(); } + +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern "C" { +class proxy_analysis { + public: + proxy_analysis() { NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); } +}; + +proxy_analysis p_analysis; +} + diff --git a/Projects/GRIT_AGATA_GANIL/Analysis.h b/Projects/GRIT_AGATA_GANIL/Analysis.h new file mode 100644 index 0000000000000000000000000000000000000000..306a9cd246265ece9f5310a75a323d43a72deba7 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/Analysis.h @@ -0,0 +1,122 @@ +#ifndef Analysis_h +#define Analysis_h +/***************************************************************************** + * Copyright (C) 2009-2014 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * + * * + * Creation Date : march 2025 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Class describing the property of an Analysis object * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include "GaspardTracker.h" +#include "NPEnergyLoss.h" +#include "NPReaction.h" +#include "NPVAnalysis.h" +#include "RootInput.h" +#include "RootOutput.h" +#include "TInitialConditions.h" +#include "TReactionConditions.h" +#include <TMath.h> +#include <TRandom3.h> +#include <TVector3.h> + +class Analysis : public NPL::VAnalysis { + public: + Analysis(); + ~Analysis(); + + public: + void Init(); + void TreatEvent(); + void End(); + + void InitOutputBranch(); + void InitInputBranch(); + void ReInitValue(); + static NPL::VAnalysis* Construct(); + + private: + double Ex; + double ExNoBeam; + double ExNoProton; + double EDC; + double ELab; + double ThetaLab; + double ThetaCM; + double OriginalELab; + double OriginalThetaLab; + + NPL::Reaction reaction; + // Energy loss table: the G4Table are generated by the simulation + NPL::EnergyLoss LightTarget; + NPL::EnergyLoss LightAl; + NPL::EnergyLoss LightSi; + NPL::EnergyLoss BeamCD2; + NPL::EnergyLoss* BeamWindow; + NPL::EnergyLoss* LightWindow; + + double TargetThickness; + double WindowsThickness; + // Beam Energy + double OriginalBeamEnergy; // AMEV + double FinalBeamEnergy; + + // intermediate variable + TVector3 BeamDirection; + TVector3 BeamImpact; + TRandom3 Rand; + int Run; + int DetectorNumber; + double ThetaNormalTarget; + double ThetaM2Surface; + double ThetaMGSurface; + double Si_E_M2; + double CsI_E_M2; + double Energy; + double BeamEnergy; + + double ThetaGDSurface; + double X; + double Y; + double Z; + // Vamos Branches + unsigned long long int LTS; + + // Agata branches + double agata_zShift; + unsigned long long int TStrack; + int nbHits; + int nbTrack; + float* trackE = new float(100); + float* trackX1 = new float(100); + float* trackY1 = new float(100); + float* trackZ1 = new float(100); + float* trackT = new float(100); + int* trackCrystalID = new int(100); + int nbCores; + int* coreId = new int(100); + ULong64_t* coreTS = new ULong64_t(100); + float* coreE0 = new float(100); + // + double dE; + double dTheta; + // Branches and detectors + GaspardTracker* GPDTrack; + bool simulation; + TInitialConditions* Initial; + TReactionConditions* ReactionConditions; +}; +#endif diff --git a/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba.txt b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba.txt new file mode 100644 index 0000000000000000000000000000000000000000..e652c827b56b78778ef7684258cdee6eeb4792e4 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba.txt @@ -0,0 +1,738 @@ +# Ex=0 - l=1 A + Theta sigma + 0.000 19.60 + 1.000 19.81 + 2.000 20.43 + 3.000 21.38 + 4.000 22.55 + 5.000 23.83 + 6.000 25.05 + 7.000 26.08 + 8.000 26.79 + 9.000 27.07 + 10.00 26.86 + 11.00 26.13 + 12.00 24.90 + 13.00 23.21 + 14.00 21.15 + 15.00 18.83 + 16.00 16.37 + 17.00 13.89 + 18.00 11.49 + 19.00 9.288 + 20.00 7.345 + 21.00 5.717 + 22.00 4.429 + 23.00 3.483 + 24.00 2.857 + 25.00 2.515 + 26.00 2.409 + 27.00 2.482 + 28.00 2.678 + 29.00 2.944 + 30.00 3.231 + 31.00 3.502 + 32.00 3.728 + 33.00 3.890 + 34.00 3.981 + 35.00 3.999 + 36.00 3.951 + 37.00 3.850 + 38.00 3.710 + 39.00 3.545 + 40.00 3.372 + 41.00 3.202 + 42.00 3.048 + 43.00 2.915 + 44.00 2.808 + 45.00 2.727 + 46.00 2.672 + 47.00 2.637 + 48.00 2.617 + 49.00 2.606 + 50.00 2.598 + 51.00 2.586 + 52.00 2.567 + 53.00 2.535 + 54.00 2.488 + 55.00 2.426 + 56.00 2.349 + 57.00 2.259 + 58.00 2.157 + 59.00 2.048 + 60.00 1.935 + 61.00 1.823 + 62.00 1.713 + 63.00 1.611 + 64.00 1.518 + 65.00 1.436 + 66.00 1.367 + 67.00 1.311 + 68.00 1.268 + 69.00 1.237 + 70.00 1.216 + 71.00 1.203 + 72.00 1.197 + 73.00 1.195 + 74.00 1.195 + 75.00 1.195 + 76.00 1.192 + 77.00 1.185 + 78.00 1.174 + 79.00 1.156 + 80.00 1.132 + 81.00 1.101 + 82.00 1.064 + 83.00 1.022 + 84.00 0.9744 + 85.00 0.9230 + 86.00 0.8688 + 87.00 0.8131 + 88.00 0.7570 + 89.00 0.7017 + 90.00 0.6481 + 91.00 0.5971 + 92.00 0.5496 + 93.00 0.5060 + 94.00 0.4668 + 95.00 0.4321 + 96.00 0.4021 + 97.00 0.3766 + 98.00 0.3553 + 99.00 0.3379 + 100.0 0.3240 + 101.0 0.3130 + 102.0 0.3045 + 103.0 0.2979 + 104.0 0.2927 + 105.0 0.2884 + 106.0 0.2845 + 107.0 0.2807 + 108.0 0.2767 + 109.0 0.2722 + 110.0 0.2670 + 111.0 0.2610 + 112.0 0.2541 + 113.0 0.2464 + 114.0 0.2378 + 115.0 0.2286 + 116.0 0.2187 + 117.0 0.2084 + 118.0 0.1977 + 119.0 0.1868 + 120.0 0.1760 + 121.0 0.1652 + 122.0 0.1547 + 123.0 0.1446 + 124.0 0.1350 + 125.0 0.1260 + 126.0 0.1176 + 127.0 0.1100 + 128.0 0.1031 + 129.0 0.9697E-01 + 130.0 0.9169E-01 + 131.0 0.8724E-01 + 132.0 0.8361E-01 + 133.0 0.8080E-01 + 134.0 0.7878E-01 + 135.0 0.7752E-01 + 136.0 0.7699E-01 + 137.0 0.7713E-01 + 138.0 0.7788E-01 + 139.0 0.7916E-01 + 140.0 0.8090E-01 + 141.0 0.8298E-01 + 142.0 0.8532E-01 + 143.0 0.8778E-01 + 144.0 0.9025E-01 + 145.0 0.9261E-01 + 146.0 0.9472E-01 + 147.0 0.9648E-01 + 148.0 0.9778E-01 + 149.0 0.9850E-01 + 150.0 0.9858E-01 + 151.0 0.9795E-01 + 152.0 0.9658E-01 + 153.0 0.9446E-01 + 154.0 0.9160E-01 + 155.0 0.8805E-01 + 156.0 0.8388E-01 + 157.0 0.7919E-01 + 158.0 0.7409E-01 + 159.0 0.6870E-01 + 160.0 0.6319E-01 + 161.0 0.5768E-01 + 162.0 0.5232E-01 + 163.0 0.4725E-01 + 164.0 0.4259E-01 + 165.0 0.3843E-01 + 166.0 0.3486E-01 + 167.0 0.3193E-01 + 168.0 0.2965E-01 + 169.0 0.2802E-01 + 170.0 0.2699E-01 + 171.0 0.2652E-01 + 172.0 0.2652E-01 + 173.0 0.2688E-01 + 174.0 0.2750E-01 + 175.0 0.2826E-01 + 176.0 0.2907E-01 + 177.0 0.2981E-01 + 178.0 0.3040E-01 + 179.0 0.3078E-01 + 180.0 0.3092E-01 + +#Ex=0.7685 - l=3 + Theta sigma + 0.000 0.5454E-01 + 1.000 0.6588E-01 + 2.000 0.9962E-01 + 3.000 0.1549 + 4.000 0.2304 + 5.000 0.3245 + 6.000 0.4356 + 7.000 0.5620 + 8.000 0.7025 + 9.000 0.8560 + 10.00 1.021 + 11.00 1.198 + 12.00 1.385 + 13.00 1.581 + 14.00 1.785 + 15.00 1.994 + 16.00 2.204 + 17.00 2.413 + 18.00 2.614 + 19.00 2.802 + 20.00 2.973 + 21.00 3.120 + 22.00 3.238 + 23.00 3.324 + 24.00 3.374 + 25.00 3.386 + 26.00 3.361 + 27.00 3.299 + 28.00 3.204 + 29.00 3.079 + 30.00 2.930 + 31.00 2.762 + 32.00 2.582 + 33.00 2.396 + 34.00 2.209 + 35.00 2.028 + 36.00 1.857 + 37.00 1.699 + 38.00 1.558 + 39.00 1.434 + 40.00 1.329 + 41.00 1.242 + 42.00 1.173 + 43.00 1.118 + 44.00 1.077 + 45.00 1.048 + 46.00 1.027 + 47.00 1.012 + 48.00 1.002 + 49.00 0.9950 + 50.00 0.9890 + 51.00 0.9833 + 52.00 0.9771 + 53.00 0.9701 + 54.00 0.9622 + 55.00 0.9536 + 56.00 0.9444 + 57.00 0.9352 + 58.00 0.9262 + 59.00 0.9178 + 60.00 0.9104 + 61.00 0.9041 + 62.00 0.8989 + 63.00 0.8949 + 64.00 0.8917 + 65.00 0.8892 + 66.00 0.8869 + 67.00 0.8844 + 68.00 0.8813 + 69.00 0.8772 + 70.00 0.8716 + 71.00 0.8643 + 72.00 0.8551 + 73.00 0.8437 + 74.00 0.8301 + 75.00 0.8144 + 76.00 0.7968 + 77.00 0.7775 + 78.00 0.7568 + 79.00 0.7351 + 80.00 0.7129 + 81.00 0.6904 + 82.00 0.6682 + 83.00 0.6466 + 84.00 0.6259 + 85.00 0.6066 + 86.00 0.5886 + 87.00 0.5724 + 88.00 0.5578 + 89.00 0.5449 + 90.00 0.5337 + 91.00 0.5241 + 92.00 0.5158 + 93.00 0.5087 + 94.00 0.5025 + 95.00 0.4969 + 96.00 0.4917 + 97.00 0.4867 + 98.00 0.4815 + 99.00 0.4759 + 100.0 0.4698 + 101.0 0.4630 + 102.0 0.4554 + 103.0 0.4469 + 104.0 0.4374 + 105.0 0.4271 + 106.0 0.4158 + 107.0 0.4038 + 108.0 0.3911 + 109.0 0.3778 + 110.0 0.3641 + 111.0 0.3501 + 112.0 0.3360 + 113.0 0.3220 + 114.0 0.3082 + 115.0 0.2948 + 116.0 0.2819 + 117.0 0.2696 + 118.0 0.2581 + 119.0 0.2473 + 120.0 0.2373 + 121.0 0.2282 + 122.0 0.2200 + 123.0 0.2127 + 124.0 0.2062 + 125.0 0.2005 + 126.0 0.1956 + 127.0 0.1914 + 128.0 0.1877 + 129.0 0.1846 + 130.0 0.1820 + 131.0 0.1797 + 132.0 0.1777 + 133.0 0.1759 + 134.0 0.1743 + 135.0 0.1728 + 136.0 0.1713 + 137.0 0.1698 + 138.0 0.1683 + 139.0 0.1667 + 140.0 0.1650 + 141.0 0.1633 + 142.0 0.1615 + 143.0 0.1595 + 144.0 0.1576 + 145.0 0.1555 + 146.0 0.1535 + 147.0 0.1514 + 148.0 0.1494 + 149.0 0.1475 + 150.0 0.1456 + 151.0 0.1439 + 152.0 0.1423 + 153.0 0.1408 + 154.0 0.1395 + 155.0 0.1385 + 156.0 0.1376 + 157.0 0.1370 + 158.0 0.1365 + 159.0 0.1363 + 160.0 0.1363 + 161.0 0.1365 + 162.0 0.1368 + 163.0 0.1374 + 164.0 0.1381 + 165.0 0.1389 + 166.0 0.1398 + 167.0 0.1408 + 168.0 0.1419 + 169.0 0.1430 + 170.0 0.1441 + 171.0 0.1451 + 172.0 0.1462 + 173.0 0.1471 + 174.0 0.1480 + 175.0 0.1488 + 176.0 0.1494 + 177.0 0.1500 + 178.0 0.1503 + 179.0 0.1506 + 180.0 0.1506 + +#Ex = 1112.6 - l=1 + + Theta sigma + 0.000 8.500 + 1.000 8.585 + 2.000 8.828 + 3.000 9.203 + 4.000 9.665 + 5.000 10.16 + 6.000 10.63 + 7.000 11.02 + 8.000 11.26 + 9.000 11.33 + 10.00 11.20 + 11.00 10.85 + 12.00 10.30 + 13.00 9.563 + 14.00 8.683 + 15.00 7.702 + 16.00 6.669 + 17.00 5.635 + 18.00 4.644 + 19.00 3.738 + 20.00 2.944 + 21.00 2.283 + 22.00 1.763 + 23.00 1.383 + 24.00 1.133 + 25.00 0.9961 + 26.00 0.9517 + 27.00 0.9763 + 28.00 1.046 + 29.00 1.139 + 30.00 1.237 + 31.00 1.324 + 32.00 1.390 + 33.00 1.428 + 34.00 1.437 + 35.00 1.417 + 36.00 1.374 + 37.00 1.312 + 38.00 1.240 + 39.00 1.165 + 40.00 1.093 + 41.00 1.031 + 42.00 0.9832 + 43.00 0.9521 + 44.00 0.9391 + 45.00 0.9441 + 46.00 0.9652 + 47.00 0.9996 + 48.00 1.044 + 49.00 1.094 + 50.00 1.145 + 51.00 1.194 + 52.00 1.237 + 53.00 1.271 + 54.00 1.294 + 55.00 1.304 + 56.00 1.301 + 57.00 1.285 + 58.00 1.256 + 59.00 1.217 + 60.00 1.168 + 61.00 1.113 + 62.00 1.052 + 63.00 0.9887 + 64.00 0.9248 + 65.00 0.8622 + 66.00 0.8026 + 67.00 0.7473 + 68.00 0.6973 + 69.00 0.6531 + 70.00 0.6150 + 71.00 0.5831 + 72.00 0.5570 + 73.00 0.5362 + 74.00 0.5200 + 75.00 0.5077 + 76.00 0.4983 + 77.00 0.4910 + 78.00 0.4850 + 79.00 0.4795 + 80.00 0.4738 + 81.00 0.4674 + 82.00 0.4599 + 83.00 0.4508 + 84.00 0.4401 + 85.00 0.4277 + 86.00 0.4136 + 87.00 0.3980 + 88.00 0.3809 + 89.00 0.3628 + 90.00 0.3438 + 91.00 0.3244 + 92.00 0.3047 + 93.00 0.2851 + 94.00 0.2659 + 95.00 0.2474 + 96.00 0.2296 + 97.00 0.2129 + 98.00 0.1972 + 99.00 0.1828 + 100.0 0.1697 + 101.0 0.1578 + 102.0 0.1471 + 103.0 0.1376 + 104.0 0.1292 + 105.0 0.1218 + 106.0 0.1153 + 107.0 0.1096 + 108.0 0.1046 + 109.0 0.1002 + 110.0 0.9623E-01 + 111.0 0.9270E-01 + 112.0 0.8949E-01 + 113.0 0.8653E-01 + 114.0 0.8377E-01 + 115.0 0.8117E-01 + 116.0 0.7868E-01 + 117.0 0.7628E-01 + 118.0 0.7396E-01 + 119.0 0.7170E-01 + 120.0 0.6950E-01 + 121.0 0.6736E-01 + 122.0 0.6526E-01 + 123.0 0.6321E-01 + 124.0 0.6122E-01 + 125.0 0.5926E-01 + 126.0 0.5735E-01 + 127.0 0.5548E-01 + 128.0 0.5364E-01 + 129.0 0.5182E-01 + 130.0 0.5004E-01 + 131.0 0.4826E-01 + 132.0 0.4650E-01 + 133.0 0.4476E-01 + 134.0 0.4302E-01 + 135.0 0.4130E-01 + 136.0 0.3960E-01 + 137.0 0.3793E-01 + 138.0 0.3630E-01 + 139.0 0.3472E-01 + 140.0 0.3321E-01 + 141.0 0.3178E-01 + 142.0 0.3045E-01 + 143.0 0.2923E-01 + 144.0 0.2815E-01 + 145.0 0.2721E-01 + 146.0 0.2642E-01 + 147.0 0.2579E-01 + 148.0 0.2532E-01 + 149.0 0.2501E-01 + 150.0 0.2486E-01 + 151.0 0.2485E-01 + 152.0 0.2497E-01 + 153.0 0.2519E-01 + 154.0 0.2550E-01 + 155.0 0.2588E-01 + 156.0 0.2629E-01 + 157.0 0.2671E-01 + 158.0 0.2710E-01 + 159.0 0.2746E-01 + 160.0 0.2774E-01 + 161.0 0.2794E-01 + 162.0 0.2803E-01 + 163.0 0.2801E-01 + 164.0 0.2785E-01 + 165.0 0.2758E-01 + 166.0 0.2717E-01 + 167.0 0.2666E-01 + 168.0 0.2604E-01 + 169.0 0.2534E-01 + 170.0 0.2457E-01 + 171.0 0.2377E-01 + 172.0 0.2295E-01 + 173.0 0.2215E-01 + 174.0 0.2139E-01 + 175.0 0.2070E-01 + 176.0 0.2009E-01 + 177.0 0.1960E-01 + 178.0 0.1924E-01 + 179.0 0.1901E-01 + 180.0 0.1894E-01 + +#Ex=3.701 - l=4 + + Theta sigma + 0.000 0.2584 + 1.000 0.2718 + 2.000 0.3116 + 3.000 0.3766 + 4.000 0.4650 + 5.000 0.5745 + 6.000 0.7021 + 7.000 0.8448 + 8.000 0.9996 + 9.000 1.163 + 10.00 1.334 + 11.00 1.508 + 12.00 1.685 + 13.00 1.863 + 14.00 2.042 + 15.00 2.222 + 16.00 2.403 + 17.00 2.586 + 18.00 2.770 + 19.00 2.956 + 20.00 3.143 + 21.00 3.332 + 22.00 3.518 + 23.00 3.702 + 24.00 3.880 + 25.00 4.048 + 26.00 4.202 + 27.00 4.340 + 28.00 4.456 + 29.00 4.548 + 30.00 4.611 + 31.00 4.645 + 32.00 4.646 + 33.00 4.616 + 34.00 4.553 + 35.00 4.461 + 36.00 4.340 + 37.00 4.194 + 38.00 4.028 + 39.00 3.845 + 40.00 3.650 + 41.00 3.448 + 42.00 3.243 + 43.00 3.041 + 44.00 2.845 + 45.00 2.658 + 46.00 2.483 + 47.00 2.322 + 48.00 2.177 + 49.00 2.049 + 50.00 1.937 + 51.00 1.841 + 52.00 1.760 + 53.00 1.694 + 54.00 1.641 + 55.00 1.598 + 56.00 1.565 + 57.00 1.540 + 58.00 1.522 + 59.00 1.508 + 60.00 1.498 + 61.00 1.491 + 62.00 1.486 + 63.00 1.482 + 64.00 1.479 + 65.00 1.476 + 66.00 1.473 + 67.00 1.470 + 68.00 1.467 + 69.00 1.463 + 70.00 1.459 + 71.00 1.455 + 72.00 1.449 + 73.00 1.443 + 74.00 1.435 + 75.00 1.426 + 76.00 1.415 + 77.00 1.403 + 78.00 1.388 + 79.00 1.371 + 80.00 1.351 + 81.00 1.329 + 82.00 1.304 + 83.00 1.276 + 84.00 1.247 + 85.00 1.215 + 86.00 1.181 + 87.00 1.146 + 88.00 1.109 + 89.00 1.072 + 90.00 1.035 + 91.00 0.9974 + 92.00 0.9609 + 93.00 0.9255 + 94.00 0.8916 + 95.00 0.8594 + 96.00 0.8293 + 97.00 0.8014 + 98.00 0.7760 + 99.00 0.7530 + 100.0 0.7326 + 101.0 0.7145 + 102.0 0.6987 + 103.0 0.6850 + 104.0 0.6732 + 105.0 0.6630 + 106.0 0.6542 + 107.0 0.6464 + 108.0 0.6394 + 109.0 0.6329 + 110.0 0.6266 + 111.0 0.6202 + 112.0 0.6135 + 113.0 0.6064 + 114.0 0.5986 + 115.0 0.5901 + 116.0 0.5808 + 117.0 0.5705 + 118.0 0.5594 + 119.0 0.5474 + 120.0 0.5347 + 121.0 0.5212 + 122.0 0.5070 + 123.0 0.4924 + 124.0 0.4775 + 125.0 0.4623 + 126.0 0.4472 + 127.0 0.4321 + 128.0 0.4173 + 129.0 0.4028 + 130.0 0.3889 + 131.0 0.3757 + 132.0 0.3632 + 133.0 0.3516 + 134.0 0.3409 + 135.0 0.3311 + 136.0 0.3224 + 137.0 0.3147 + 138.0 0.3080 + 139.0 0.3023 + 140.0 0.2975 + 141.0 0.2937 + 142.0 0.2908 + 143.0 0.2886 + 144.0 0.2872 + 145.0 0.2863 + 146.0 0.2861 + 147.0 0.2862 + 148.0 0.2868 + 149.0 0.2876 + 150.0 0.2885 + 151.0 0.2896 + 152.0 0.2906 + 153.0 0.2916 + 154.0 0.2925 + 155.0 0.2932 + 156.0 0.2936 + 157.0 0.2937 + 158.0 0.2935 + 159.0 0.2930 + 160.0 0.2922 + 161.0 0.2910 + 162.0 0.2895 + 163.0 0.2877 + 164.0 0.2855 + 165.0 0.2832 + 166.0 0.2806 + 167.0 0.2778 + 168.0 0.2750 + 169.0 0.2721 + 170.0 0.2692 + 171.0 0.2663 + 172.0 0.2636 + 173.0 0.2610 + 174.0 0.2586 + 175.0 0.2566 + 176.0 0.2548 + 177.0 0.2534 + 178.0 0.2524 + 179.0 0.2518 + 180.0 0.2515 + END diff --git a/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex07685_l3.txt b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex07685_l3.txt new file mode 100644 index 0000000000000000000000000000000000000000..498ca340be9bc8b66034f57d6a3768681bd38d44 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex07685_l3.txt @@ -0,0 +1,181 @@ + 0.000 0.5454E-01 + 1.000 0.6588E-01 + 2.000 0.9962E-01 + 3.000 0.1549 + 4.000 0.2304 + 5.000 0.3245 + 6.000 0.4356 + 7.000 0.5620 + 8.000 0.7025 + 9.000 0.8560 + 10.00 1.021 + 11.00 1.198 + 12.00 1.385 + 13.00 1.581 + 14.00 1.785 + 15.00 1.994 + 16.00 2.204 + 17.00 2.413 + 18.00 2.614 + 19.00 2.802 + 20.00 2.973 + 21.00 3.120 + 22.00 3.238 + 23.00 3.324 + 24.00 3.374 + 25.00 3.386 + 26.00 3.361 + 27.00 3.299 + 28.00 3.204 + 29.00 3.079 + 30.00 2.930 + 31.00 2.762 + 32.00 2.582 + 33.00 2.396 + 34.00 2.209 + 35.00 2.028 + 36.00 1.857 + 37.00 1.699 + 38.00 1.558 + 39.00 1.434 + 40.00 1.329 + 41.00 1.242 + 42.00 1.173 + 43.00 1.118 + 44.00 1.077 + 45.00 1.048 + 46.00 1.027 + 47.00 1.012 + 48.00 1.002 + 49.00 0.9950 + 50.00 0.9890 + 51.00 0.9833 + 52.00 0.9771 + 53.00 0.9701 + 54.00 0.9622 + 55.00 0.9536 + 56.00 0.9444 + 57.00 0.9352 + 58.00 0.9262 + 59.00 0.9178 + 60.00 0.9104 + 61.00 0.9041 + 62.00 0.8989 + 63.00 0.8949 + 64.00 0.8917 + 65.00 0.8892 + 66.00 0.8869 + 67.00 0.8844 + 68.00 0.8813 + 69.00 0.8772 + 70.00 0.8716 + 71.00 0.8643 + 72.00 0.8551 + 73.00 0.8437 + 74.00 0.8301 + 75.00 0.8144 + 76.00 0.7968 + 77.00 0.7775 + 78.00 0.7568 + 79.00 0.7351 + 80.00 0.7129 + 81.00 0.6904 + 82.00 0.6682 + 83.00 0.6466 + 84.00 0.6259 + 85.00 0.6066 + 86.00 0.5886 + 87.00 0.5724 + 88.00 0.5578 + 89.00 0.5449 + 90.00 0.5337 + 91.00 0.5241 + 92.00 0.5158 + 93.00 0.5087 + 94.00 0.5025 + 95.00 0.4969 + 96.00 0.4917 + 97.00 0.4867 + 98.00 0.4815 + 99.00 0.4759 + 100.0 0.4698 + 101.0 0.4630 + 102.0 0.4554 + 103.0 0.4469 + 104.0 0.4374 + 105.0 0.4271 + 106.0 0.4158 + 107.0 0.4038 + 108.0 0.3911 + 109.0 0.3778 + 110.0 0.3641 + 111.0 0.3501 + 112.0 0.3360 + 113.0 0.3220 + 114.0 0.3082 + 115.0 0.2948 + 116.0 0.2819 + 117.0 0.2696 + 118.0 0.2581 + 119.0 0.2473 + 120.0 0.2373 + 121.0 0.2282 + 122.0 0.2200 + 123.0 0.2127 + 124.0 0.2062 + 125.0 0.2005 + 126.0 0.1956 + 127.0 0.1914 + 128.0 0.1877 + 129.0 0.1846 + 130.0 0.1820 + 131.0 0.1797 + 132.0 0.1777 + 133.0 0.1759 + 134.0 0.1743 + 135.0 0.1728 + 136.0 0.1713 + 137.0 0.1698 + 138.0 0.1683 + 139.0 0.1667 + 140.0 0.1650 + 141.0 0.1633 + 142.0 0.1615 + 143.0 0.1595 + 144.0 0.1576 + 145.0 0.1555 + 146.0 0.1535 + 147.0 0.1514 + 148.0 0.1494 + 149.0 0.1475 + 150.0 0.1456 + 151.0 0.1439 + 152.0 0.1423 + 153.0 0.1408 + 154.0 0.1395 + 155.0 0.1385 + 156.0 0.1376 + 157.0 0.1370 + 158.0 0.1365 + 159.0 0.1363 + 160.0 0.1363 + 161.0 0.1365 + 162.0 0.1368 + 163.0 0.1374 + 164.0 0.1381 + 165.0 0.1389 + 166.0 0.1398 + 167.0 0.1408 + 168.0 0.1419 + 169.0 0.1430 + 170.0 0.1441 + 171.0 0.1451 + 172.0 0.1462 + 173.0 0.1471 + 174.0 0.1480 + 175.0 0.1488 + 176.0 0.1494 + 177.0 0.1500 + 178.0 0.1503 + 179.0 0.1506 + 180.0 0.1506 diff --git a/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex1112_l1.txt b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex1112_l1.txt new file mode 100644 index 0000000000000000000000000000000000000000..ecc976b4a2021c225c6912e778a6b028d6732f7e --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex1112_l1.txt @@ -0,0 +1,181 @@ + 0.000 8.500 + 1.000 8.585 + 2.000 8.828 + 3.000 9.203 + 4.000 9.665 + 5.000 10.16 + 6.000 10.63 + 7.000 11.02 + 8.000 11.26 + 9.000 11.33 + 10.00 11.20 + 11.00 10.85 + 12.00 10.30 + 13.00 9.563 + 14.00 8.683 + 15.00 7.702 + 16.00 6.669 + 17.00 5.635 + 18.00 4.644 + 19.00 3.738 + 20.00 2.944 + 21.00 2.283 + 22.00 1.763 + 23.00 1.383 + 24.00 1.133 + 25.00 0.9961 + 26.00 0.9517 + 27.00 0.9763 + 28.00 1.046 + 29.00 1.139 + 30.00 1.237 + 31.00 1.324 + 32.00 1.390 + 33.00 1.428 + 34.00 1.437 + 35.00 1.417 + 36.00 1.374 + 37.00 1.312 + 38.00 1.240 + 39.00 1.165 + 40.00 1.093 + 41.00 1.031 + 42.00 0.9832 + 43.00 0.9521 + 44.00 0.9391 + 45.00 0.9441 + 46.00 0.9652 + 47.00 0.9996 + 48.00 1.044 + 49.00 1.094 + 50.00 1.145 + 51.00 1.194 + 52.00 1.237 + 53.00 1.271 + 54.00 1.294 + 55.00 1.304 + 56.00 1.301 + 57.00 1.285 + 58.00 1.256 + 59.00 1.217 + 60.00 1.168 + 61.00 1.113 + 62.00 1.052 + 63.00 0.9887 + 64.00 0.9248 + 65.00 0.8622 + 66.00 0.8026 + 67.00 0.7473 + 68.00 0.6973 + 69.00 0.6531 + 70.00 0.6150 + 71.00 0.5831 + 72.00 0.5570 + 73.00 0.5362 + 74.00 0.5200 + 75.00 0.5077 + 76.00 0.4983 + 77.00 0.4910 + 78.00 0.4850 + 79.00 0.4795 + 80.00 0.4738 + 81.00 0.4674 + 82.00 0.4599 + 83.00 0.4508 + 84.00 0.4401 + 85.00 0.4277 + 86.00 0.4136 + 87.00 0.3980 + 88.00 0.3809 + 89.00 0.3628 + 90.00 0.3438 + 91.00 0.3244 + 92.00 0.3047 + 93.00 0.2851 + 94.00 0.2659 + 95.00 0.2474 + 96.00 0.2296 + 97.00 0.2129 + 98.00 0.1972 + 99.00 0.1828 + 100.0 0.1697 + 101.0 0.1578 + 102.0 0.1471 + 103.0 0.1376 + 104.0 0.1292 + 105.0 0.1218 + 106.0 0.1153 + 107.0 0.1096 + 108.0 0.1046 + 109.0 0.1002 + 110.0 0.9623E-01 + 111.0 0.9270E-01 + 112.0 0.8949E-01 + 113.0 0.8653E-01 + 114.0 0.8377E-01 + 115.0 0.8117E-01 + 116.0 0.7868E-01 + 117.0 0.7628E-01 + 118.0 0.7396E-01 + 119.0 0.7170E-01 + 120.0 0.6950E-01 + 121.0 0.6736E-01 + 122.0 0.6526E-01 + 123.0 0.6321E-01 + 124.0 0.6122E-01 + 125.0 0.5926E-01 + 126.0 0.5735E-01 + 127.0 0.5548E-01 + 128.0 0.5364E-01 + 129.0 0.5182E-01 + 130.0 0.5004E-01 + 131.0 0.4826E-01 + 132.0 0.4650E-01 + 133.0 0.4476E-01 + 134.0 0.4302E-01 + 135.0 0.4130E-01 + 136.0 0.3960E-01 + 137.0 0.3793E-01 + 138.0 0.3630E-01 + 139.0 0.3472E-01 + 140.0 0.3321E-01 + 141.0 0.3178E-01 + 142.0 0.3045E-01 + 143.0 0.2923E-01 + 144.0 0.2815E-01 + 145.0 0.2721E-01 + 146.0 0.2642E-01 + 147.0 0.2579E-01 + 148.0 0.2532E-01 + 149.0 0.2501E-01 + 150.0 0.2486E-01 + 151.0 0.2485E-01 + 152.0 0.2497E-01 + 153.0 0.2519E-01 + 154.0 0.2550E-01 + 155.0 0.2588E-01 + 156.0 0.2629E-01 + 157.0 0.2671E-01 + 158.0 0.2710E-01 + 159.0 0.2746E-01 + 160.0 0.2774E-01 + 161.0 0.2794E-01 + 162.0 0.2803E-01 + 163.0 0.2801E-01 + 164.0 0.2785E-01 + 165.0 0.2758E-01 + 166.0 0.2717E-01 + 167.0 0.2666E-01 + 168.0 0.2604E-01 + 169.0 0.2534E-01 + 170.0 0.2457E-01 + 171.0 0.2377E-01 + 172.0 0.2295E-01 + 173.0 0.2215E-01 + 174.0 0.2139E-01 + 175.0 0.2070E-01 + 176.0 0.2009E-01 + 177.0 0.1960E-01 + 178.0 0.1924E-01 + 179.0 0.1901E-01 + 180.0 0.1894E-01 diff --git a/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex3701_l4.txt b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex3701_l4.txt new file mode 100644 index 0000000000000000000000000000000000000000..e652c827b56b78778ef7684258cdee6eeb4792e4 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_Ex3701_l4.txt @@ -0,0 +1,738 @@ +# Ex=0 - l=1 A + Theta sigma + 0.000 19.60 + 1.000 19.81 + 2.000 20.43 + 3.000 21.38 + 4.000 22.55 + 5.000 23.83 + 6.000 25.05 + 7.000 26.08 + 8.000 26.79 + 9.000 27.07 + 10.00 26.86 + 11.00 26.13 + 12.00 24.90 + 13.00 23.21 + 14.00 21.15 + 15.00 18.83 + 16.00 16.37 + 17.00 13.89 + 18.00 11.49 + 19.00 9.288 + 20.00 7.345 + 21.00 5.717 + 22.00 4.429 + 23.00 3.483 + 24.00 2.857 + 25.00 2.515 + 26.00 2.409 + 27.00 2.482 + 28.00 2.678 + 29.00 2.944 + 30.00 3.231 + 31.00 3.502 + 32.00 3.728 + 33.00 3.890 + 34.00 3.981 + 35.00 3.999 + 36.00 3.951 + 37.00 3.850 + 38.00 3.710 + 39.00 3.545 + 40.00 3.372 + 41.00 3.202 + 42.00 3.048 + 43.00 2.915 + 44.00 2.808 + 45.00 2.727 + 46.00 2.672 + 47.00 2.637 + 48.00 2.617 + 49.00 2.606 + 50.00 2.598 + 51.00 2.586 + 52.00 2.567 + 53.00 2.535 + 54.00 2.488 + 55.00 2.426 + 56.00 2.349 + 57.00 2.259 + 58.00 2.157 + 59.00 2.048 + 60.00 1.935 + 61.00 1.823 + 62.00 1.713 + 63.00 1.611 + 64.00 1.518 + 65.00 1.436 + 66.00 1.367 + 67.00 1.311 + 68.00 1.268 + 69.00 1.237 + 70.00 1.216 + 71.00 1.203 + 72.00 1.197 + 73.00 1.195 + 74.00 1.195 + 75.00 1.195 + 76.00 1.192 + 77.00 1.185 + 78.00 1.174 + 79.00 1.156 + 80.00 1.132 + 81.00 1.101 + 82.00 1.064 + 83.00 1.022 + 84.00 0.9744 + 85.00 0.9230 + 86.00 0.8688 + 87.00 0.8131 + 88.00 0.7570 + 89.00 0.7017 + 90.00 0.6481 + 91.00 0.5971 + 92.00 0.5496 + 93.00 0.5060 + 94.00 0.4668 + 95.00 0.4321 + 96.00 0.4021 + 97.00 0.3766 + 98.00 0.3553 + 99.00 0.3379 + 100.0 0.3240 + 101.0 0.3130 + 102.0 0.3045 + 103.0 0.2979 + 104.0 0.2927 + 105.0 0.2884 + 106.0 0.2845 + 107.0 0.2807 + 108.0 0.2767 + 109.0 0.2722 + 110.0 0.2670 + 111.0 0.2610 + 112.0 0.2541 + 113.0 0.2464 + 114.0 0.2378 + 115.0 0.2286 + 116.0 0.2187 + 117.0 0.2084 + 118.0 0.1977 + 119.0 0.1868 + 120.0 0.1760 + 121.0 0.1652 + 122.0 0.1547 + 123.0 0.1446 + 124.0 0.1350 + 125.0 0.1260 + 126.0 0.1176 + 127.0 0.1100 + 128.0 0.1031 + 129.0 0.9697E-01 + 130.0 0.9169E-01 + 131.0 0.8724E-01 + 132.0 0.8361E-01 + 133.0 0.8080E-01 + 134.0 0.7878E-01 + 135.0 0.7752E-01 + 136.0 0.7699E-01 + 137.0 0.7713E-01 + 138.0 0.7788E-01 + 139.0 0.7916E-01 + 140.0 0.8090E-01 + 141.0 0.8298E-01 + 142.0 0.8532E-01 + 143.0 0.8778E-01 + 144.0 0.9025E-01 + 145.0 0.9261E-01 + 146.0 0.9472E-01 + 147.0 0.9648E-01 + 148.0 0.9778E-01 + 149.0 0.9850E-01 + 150.0 0.9858E-01 + 151.0 0.9795E-01 + 152.0 0.9658E-01 + 153.0 0.9446E-01 + 154.0 0.9160E-01 + 155.0 0.8805E-01 + 156.0 0.8388E-01 + 157.0 0.7919E-01 + 158.0 0.7409E-01 + 159.0 0.6870E-01 + 160.0 0.6319E-01 + 161.0 0.5768E-01 + 162.0 0.5232E-01 + 163.0 0.4725E-01 + 164.0 0.4259E-01 + 165.0 0.3843E-01 + 166.0 0.3486E-01 + 167.0 0.3193E-01 + 168.0 0.2965E-01 + 169.0 0.2802E-01 + 170.0 0.2699E-01 + 171.0 0.2652E-01 + 172.0 0.2652E-01 + 173.0 0.2688E-01 + 174.0 0.2750E-01 + 175.0 0.2826E-01 + 176.0 0.2907E-01 + 177.0 0.2981E-01 + 178.0 0.3040E-01 + 179.0 0.3078E-01 + 180.0 0.3092E-01 + +#Ex=0.7685 - l=3 + Theta sigma + 0.000 0.5454E-01 + 1.000 0.6588E-01 + 2.000 0.9962E-01 + 3.000 0.1549 + 4.000 0.2304 + 5.000 0.3245 + 6.000 0.4356 + 7.000 0.5620 + 8.000 0.7025 + 9.000 0.8560 + 10.00 1.021 + 11.00 1.198 + 12.00 1.385 + 13.00 1.581 + 14.00 1.785 + 15.00 1.994 + 16.00 2.204 + 17.00 2.413 + 18.00 2.614 + 19.00 2.802 + 20.00 2.973 + 21.00 3.120 + 22.00 3.238 + 23.00 3.324 + 24.00 3.374 + 25.00 3.386 + 26.00 3.361 + 27.00 3.299 + 28.00 3.204 + 29.00 3.079 + 30.00 2.930 + 31.00 2.762 + 32.00 2.582 + 33.00 2.396 + 34.00 2.209 + 35.00 2.028 + 36.00 1.857 + 37.00 1.699 + 38.00 1.558 + 39.00 1.434 + 40.00 1.329 + 41.00 1.242 + 42.00 1.173 + 43.00 1.118 + 44.00 1.077 + 45.00 1.048 + 46.00 1.027 + 47.00 1.012 + 48.00 1.002 + 49.00 0.9950 + 50.00 0.9890 + 51.00 0.9833 + 52.00 0.9771 + 53.00 0.9701 + 54.00 0.9622 + 55.00 0.9536 + 56.00 0.9444 + 57.00 0.9352 + 58.00 0.9262 + 59.00 0.9178 + 60.00 0.9104 + 61.00 0.9041 + 62.00 0.8989 + 63.00 0.8949 + 64.00 0.8917 + 65.00 0.8892 + 66.00 0.8869 + 67.00 0.8844 + 68.00 0.8813 + 69.00 0.8772 + 70.00 0.8716 + 71.00 0.8643 + 72.00 0.8551 + 73.00 0.8437 + 74.00 0.8301 + 75.00 0.8144 + 76.00 0.7968 + 77.00 0.7775 + 78.00 0.7568 + 79.00 0.7351 + 80.00 0.7129 + 81.00 0.6904 + 82.00 0.6682 + 83.00 0.6466 + 84.00 0.6259 + 85.00 0.6066 + 86.00 0.5886 + 87.00 0.5724 + 88.00 0.5578 + 89.00 0.5449 + 90.00 0.5337 + 91.00 0.5241 + 92.00 0.5158 + 93.00 0.5087 + 94.00 0.5025 + 95.00 0.4969 + 96.00 0.4917 + 97.00 0.4867 + 98.00 0.4815 + 99.00 0.4759 + 100.0 0.4698 + 101.0 0.4630 + 102.0 0.4554 + 103.0 0.4469 + 104.0 0.4374 + 105.0 0.4271 + 106.0 0.4158 + 107.0 0.4038 + 108.0 0.3911 + 109.0 0.3778 + 110.0 0.3641 + 111.0 0.3501 + 112.0 0.3360 + 113.0 0.3220 + 114.0 0.3082 + 115.0 0.2948 + 116.0 0.2819 + 117.0 0.2696 + 118.0 0.2581 + 119.0 0.2473 + 120.0 0.2373 + 121.0 0.2282 + 122.0 0.2200 + 123.0 0.2127 + 124.0 0.2062 + 125.0 0.2005 + 126.0 0.1956 + 127.0 0.1914 + 128.0 0.1877 + 129.0 0.1846 + 130.0 0.1820 + 131.0 0.1797 + 132.0 0.1777 + 133.0 0.1759 + 134.0 0.1743 + 135.0 0.1728 + 136.0 0.1713 + 137.0 0.1698 + 138.0 0.1683 + 139.0 0.1667 + 140.0 0.1650 + 141.0 0.1633 + 142.0 0.1615 + 143.0 0.1595 + 144.0 0.1576 + 145.0 0.1555 + 146.0 0.1535 + 147.0 0.1514 + 148.0 0.1494 + 149.0 0.1475 + 150.0 0.1456 + 151.0 0.1439 + 152.0 0.1423 + 153.0 0.1408 + 154.0 0.1395 + 155.0 0.1385 + 156.0 0.1376 + 157.0 0.1370 + 158.0 0.1365 + 159.0 0.1363 + 160.0 0.1363 + 161.0 0.1365 + 162.0 0.1368 + 163.0 0.1374 + 164.0 0.1381 + 165.0 0.1389 + 166.0 0.1398 + 167.0 0.1408 + 168.0 0.1419 + 169.0 0.1430 + 170.0 0.1441 + 171.0 0.1451 + 172.0 0.1462 + 173.0 0.1471 + 174.0 0.1480 + 175.0 0.1488 + 176.0 0.1494 + 177.0 0.1500 + 178.0 0.1503 + 179.0 0.1506 + 180.0 0.1506 + +#Ex = 1112.6 - l=1 + + Theta sigma + 0.000 8.500 + 1.000 8.585 + 2.000 8.828 + 3.000 9.203 + 4.000 9.665 + 5.000 10.16 + 6.000 10.63 + 7.000 11.02 + 8.000 11.26 + 9.000 11.33 + 10.00 11.20 + 11.00 10.85 + 12.00 10.30 + 13.00 9.563 + 14.00 8.683 + 15.00 7.702 + 16.00 6.669 + 17.00 5.635 + 18.00 4.644 + 19.00 3.738 + 20.00 2.944 + 21.00 2.283 + 22.00 1.763 + 23.00 1.383 + 24.00 1.133 + 25.00 0.9961 + 26.00 0.9517 + 27.00 0.9763 + 28.00 1.046 + 29.00 1.139 + 30.00 1.237 + 31.00 1.324 + 32.00 1.390 + 33.00 1.428 + 34.00 1.437 + 35.00 1.417 + 36.00 1.374 + 37.00 1.312 + 38.00 1.240 + 39.00 1.165 + 40.00 1.093 + 41.00 1.031 + 42.00 0.9832 + 43.00 0.9521 + 44.00 0.9391 + 45.00 0.9441 + 46.00 0.9652 + 47.00 0.9996 + 48.00 1.044 + 49.00 1.094 + 50.00 1.145 + 51.00 1.194 + 52.00 1.237 + 53.00 1.271 + 54.00 1.294 + 55.00 1.304 + 56.00 1.301 + 57.00 1.285 + 58.00 1.256 + 59.00 1.217 + 60.00 1.168 + 61.00 1.113 + 62.00 1.052 + 63.00 0.9887 + 64.00 0.9248 + 65.00 0.8622 + 66.00 0.8026 + 67.00 0.7473 + 68.00 0.6973 + 69.00 0.6531 + 70.00 0.6150 + 71.00 0.5831 + 72.00 0.5570 + 73.00 0.5362 + 74.00 0.5200 + 75.00 0.5077 + 76.00 0.4983 + 77.00 0.4910 + 78.00 0.4850 + 79.00 0.4795 + 80.00 0.4738 + 81.00 0.4674 + 82.00 0.4599 + 83.00 0.4508 + 84.00 0.4401 + 85.00 0.4277 + 86.00 0.4136 + 87.00 0.3980 + 88.00 0.3809 + 89.00 0.3628 + 90.00 0.3438 + 91.00 0.3244 + 92.00 0.3047 + 93.00 0.2851 + 94.00 0.2659 + 95.00 0.2474 + 96.00 0.2296 + 97.00 0.2129 + 98.00 0.1972 + 99.00 0.1828 + 100.0 0.1697 + 101.0 0.1578 + 102.0 0.1471 + 103.0 0.1376 + 104.0 0.1292 + 105.0 0.1218 + 106.0 0.1153 + 107.0 0.1096 + 108.0 0.1046 + 109.0 0.1002 + 110.0 0.9623E-01 + 111.0 0.9270E-01 + 112.0 0.8949E-01 + 113.0 0.8653E-01 + 114.0 0.8377E-01 + 115.0 0.8117E-01 + 116.0 0.7868E-01 + 117.0 0.7628E-01 + 118.0 0.7396E-01 + 119.0 0.7170E-01 + 120.0 0.6950E-01 + 121.0 0.6736E-01 + 122.0 0.6526E-01 + 123.0 0.6321E-01 + 124.0 0.6122E-01 + 125.0 0.5926E-01 + 126.0 0.5735E-01 + 127.0 0.5548E-01 + 128.0 0.5364E-01 + 129.0 0.5182E-01 + 130.0 0.5004E-01 + 131.0 0.4826E-01 + 132.0 0.4650E-01 + 133.0 0.4476E-01 + 134.0 0.4302E-01 + 135.0 0.4130E-01 + 136.0 0.3960E-01 + 137.0 0.3793E-01 + 138.0 0.3630E-01 + 139.0 0.3472E-01 + 140.0 0.3321E-01 + 141.0 0.3178E-01 + 142.0 0.3045E-01 + 143.0 0.2923E-01 + 144.0 0.2815E-01 + 145.0 0.2721E-01 + 146.0 0.2642E-01 + 147.0 0.2579E-01 + 148.0 0.2532E-01 + 149.0 0.2501E-01 + 150.0 0.2486E-01 + 151.0 0.2485E-01 + 152.0 0.2497E-01 + 153.0 0.2519E-01 + 154.0 0.2550E-01 + 155.0 0.2588E-01 + 156.0 0.2629E-01 + 157.0 0.2671E-01 + 158.0 0.2710E-01 + 159.0 0.2746E-01 + 160.0 0.2774E-01 + 161.0 0.2794E-01 + 162.0 0.2803E-01 + 163.0 0.2801E-01 + 164.0 0.2785E-01 + 165.0 0.2758E-01 + 166.0 0.2717E-01 + 167.0 0.2666E-01 + 168.0 0.2604E-01 + 169.0 0.2534E-01 + 170.0 0.2457E-01 + 171.0 0.2377E-01 + 172.0 0.2295E-01 + 173.0 0.2215E-01 + 174.0 0.2139E-01 + 175.0 0.2070E-01 + 176.0 0.2009E-01 + 177.0 0.1960E-01 + 178.0 0.1924E-01 + 179.0 0.1901E-01 + 180.0 0.1894E-01 + +#Ex=3.701 - l=4 + + Theta sigma + 0.000 0.2584 + 1.000 0.2718 + 2.000 0.3116 + 3.000 0.3766 + 4.000 0.4650 + 5.000 0.5745 + 6.000 0.7021 + 7.000 0.8448 + 8.000 0.9996 + 9.000 1.163 + 10.00 1.334 + 11.00 1.508 + 12.00 1.685 + 13.00 1.863 + 14.00 2.042 + 15.00 2.222 + 16.00 2.403 + 17.00 2.586 + 18.00 2.770 + 19.00 2.956 + 20.00 3.143 + 21.00 3.332 + 22.00 3.518 + 23.00 3.702 + 24.00 3.880 + 25.00 4.048 + 26.00 4.202 + 27.00 4.340 + 28.00 4.456 + 29.00 4.548 + 30.00 4.611 + 31.00 4.645 + 32.00 4.646 + 33.00 4.616 + 34.00 4.553 + 35.00 4.461 + 36.00 4.340 + 37.00 4.194 + 38.00 4.028 + 39.00 3.845 + 40.00 3.650 + 41.00 3.448 + 42.00 3.243 + 43.00 3.041 + 44.00 2.845 + 45.00 2.658 + 46.00 2.483 + 47.00 2.322 + 48.00 2.177 + 49.00 2.049 + 50.00 1.937 + 51.00 1.841 + 52.00 1.760 + 53.00 1.694 + 54.00 1.641 + 55.00 1.598 + 56.00 1.565 + 57.00 1.540 + 58.00 1.522 + 59.00 1.508 + 60.00 1.498 + 61.00 1.491 + 62.00 1.486 + 63.00 1.482 + 64.00 1.479 + 65.00 1.476 + 66.00 1.473 + 67.00 1.470 + 68.00 1.467 + 69.00 1.463 + 70.00 1.459 + 71.00 1.455 + 72.00 1.449 + 73.00 1.443 + 74.00 1.435 + 75.00 1.426 + 76.00 1.415 + 77.00 1.403 + 78.00 1.388 + 79.00 1.371 + 80.00 1.351 + 81.00 1.329 + 82.00 1.304 + 83.00 1.276 + 84.00 1.247 + 85.00 1.215 + 86.00 1.181 + 87.00 1.146 + 88.00 1.109 + 89.00 1.072 + 90.00 1.035 + 91.00 0.9974 + 92.00 0.9609 + 93.00 0.9255 + 94.00 0.8916 + 95.00 0.8594 + 96.00 0.8293 + 97.00 0.8014 + 98.00 0.7760 + 99.00 0.7530 + 100.0 0.7326 + 101.0 0.7145 + 102.0 0.6987 + 103.0 0.6850 + 104.0 0.6732 + 105.0 0.6630 + 106.0 0.6542 + 107.0 0.6464 + 108.0 0.6394 + 109.0 0.6329 + 110.0 0.6266 + 111.0 0.6202 + 112.0 0.6135 + 113.0 0.6064 + 114.0 0.5986 + 115.0 0.5901 + 116.0 0.5808 + 117.0 0.5705 + 118.0 0.5594 + 119.0 0.5474 + 120.0 0.5347 + 121.0 0.5212 + 122.0 0.5070 + 123.0 0.4924 + 124.0 0.4775 + 125.0 0.4623 + 126.0 0.4472 + 127.0 0.4321 + 128.0 0.4173 + 129.0 0.4028 + 130.0 0.3889 + 131.0 0.3757 + 132.0 0.3632 + 133.0 0.3516 + 134.0 0.3409 + 135.0 0.3311 + 136.0 0.3224 + 137.0 0.3147 + 138.0 0.3080 + 139.0 0.3023 + 140.0 0.2975 + 141.0 0.2937 + 142.0 0.2908 + 143.0 0.2886 + 144.0 0.2872 + 145.0 0.2863 + 146.0 0.2861 + 147.0 0.2862 + 148.0 0.2868 + 149.0 0.2876 + 150.0 0.2885 + 151.0 0.2896 + 152.0 0.2906 + 153.0 0.2916 + 154.0 0.2925 + 155.0 0.2932 + 156.0 0.2936 + 157.0 0.2937 + 158.0 0.2935 + 159.0 0.2930 + 160.0 0.2922 + 161.0 0.2910 + 162.0 0.2895 + 163.0 0.2877 + 164.0 0.2855 + 165.0 0.2832 + 166.0 0.2806 + 167.0 0.2778 + 168.0 0.2750 + 169.0 0.2721 + 170.0 0.2692 + 171.0 0.2663 + 172.0 0.2636 + 173.0 0.2610 + 174.0 0.2586 + 175.0 0.2566 + 176.0 0.2548 + 177.0 0.2534 + 178.0 0.2524 + 179.0 0.2518 + 180.0 0.2515 + END diff --git a/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_l1.txt b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_l1.txt new file mode 100644 index 0000000000000000000000000000000000000000..b9ac0338d7f41b8199a1a6961dc8aadca9d859aa --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/cross_sections/56Ni_dp_dwba_l1.txt @@ -0,0 +1,181 @@ + 0.000 19.60 + 1.000 19.81 + 2.000 20.43 + 3.000 21.38 + 4.000 22.55 + 5.000 23.83 + 6.000 25.05 + 7.000 26.08 + 8.000 26.79 + 9.000 27.07 + 10.00 26.86 + 11.00 26.13 + 12.00 24.90 + 13.00 23.21 + 14.00 21.15 + 15.00 18.83 + 16.00 16.37 + 17.00 13.89 + 18.00 11.49 + 19.00 9.288 + 20.00 7.345 + 21.00 5.717 + 22.00 4.429 + 23.00 3.483 + 24.00 2.857 + 25.00 2.515 + 26.00 2.409 + 27.00 2.482 + 28.00 2.678 + 29.00 2.944 + 30.00 3.231 + 31.00 3.502 + 32.00 3.728 + 33.00 3.890 + 34.00 3.981 + 35.00 3.999 + 36.00 3.951 + 37.00 3.850 + 38.00 3.710 + 39.00 3.545 + 40.00 3.372 + 41.00 3.202 + 42.00 3.048 + 43.00 2.915 + 44.00 2.808 + 45.00 2.727 + 46.00 2.672 + 47.00 2.637 + 48.00 2.617 + 49.00 2.606 + 50.00 2.598 + 51.00 2.586 + 52.00 2.567 + 53.00 2.535 + 54.00 2.488 + 55.00 2.426 + 56.00 2.349 + 57.00 2.259 + 58.00 2.157 + 59.00 2.048 + 60.00 1.935 + 61.00 1.823 + 62.00 1.713 + 63.00 1.611 + 64.00 1.518 + 65.00 1.436 + 66.00 1.367 + 67.00 1.311 + 68.00 1.268 + 69.00 1.237 + 70.00 1.216 + 71.00 1.203 + 72.00 1.197 + 73.00 1.195 + 74.00 1.195 + 75.00 1.195 + 76.00 1.192 + 77.00 1.185 + 78.00 1.174 + 79.00 1.156 + 80.00 1.132 + 81.00 1.101 + 82.00 1.064 + 83.00 1.022 + 84.00 0.9744 + 85.00 0.9230 + 86.00 0.8688 + 87.00 0.8131 + 88.00 0.7570 + 89.00 0.7017 + 90.00 0.6481 + 91.00 0.5971 + 92.00 0.5496 + 93.00 0.5060 + 94.00 0.4668 + 95.00 0.4321 + 96.00 0.4021 + 97.00 0.3766 + 98.00 0.3553 + 99.00 0.3379 + 100.0 0.3240 + 101.0 0.3130 + 102.0 0.3045 + 103.0 0.2979 + 104.0 0.2927 + 105.0 0.2884 + 106.0 0.2845 + 107.0 0.2807 + 108.0 0.2767 + 109.0 0.2722 + 110.0 0.2670 + 111.0 0.2610 + 112.0 0.2541 + 113.0 0.2464 + 114.0 0.2378 + 115.0 0.2286 + 116.0 0.2187 + 117.0 0.2084 + 118.0 0.1977 + 119.0 0.1868 + 120.0 0.1760 + 121.0 0.1652 + 122.0 0.1547 + 123.0 0.1446 + 124.0 0.1350 + 125.0 0.1260 + 126.0 0.1176 + 127.0 0.1100 + 128.0 0.1031 + 129.0 0.9697E-01 + 130.0 0.9169E-01 + 131.0 0.8724E-01 + 132.0 0.8361E-01 + 133.0 0.8080E-01 + 134.0 0.7878E-01 + 135.0 0.7752E-01 + 136.0 0.7699E-01 + 137.0 0.7713E-01 + 138.0 0.7788E-01 + 139.0 0.7916E-01 + 140.0 0.8090E-01 + 141.0 0.8298E-01 + 142.0 0.8532E-01 + 143.0 0.8778E-01 + 144.0 0.9025E-01 + 145.0 0.9261E-01 + 146.0 0.9472E-01 + 147.0 0.9648E-01 + 148.0 0.9778E-01 + 149.0 0.9850E-01 + 150.0 0.9858E-01 + 151.0 0.9795E-01 + 152.0 0.9658E-01 + 153.0 0.9446E-01 + 154.0 0.9160E-01 + 155.0 0.8805E-01 + 156.0 0.8388E-01 + 157.0 0.7919E-01 + 158.0 0.7409E-01 + 159.0 0.6870E-01 + 160.0 0.6319E-01 + 161.0 0.5768E-01 + 162.0 0.5232E-01 + 163.0 0.4725E-01 + 164.0 0.4259E-01 + 165.0 0.3843E-01 + 166.0 0.3486E-01 + 167.0 0.3193E-01 + 168.0 0.2965E-01 + 169.0 0.2802E-01 + 170.0 0.2699E-01 + 171.0 0.2652E-01 + 172.0 0.2652E-01 + 173.0 0.2688E-01 + 174.0 0.2750E-01 + 175.0 0.2826E-01 + 176.0 0.2907E-01 + 177.0 0.2981E-01 + 178.0 0.3040E-01 + 179.0 0.3078E-01 + 180.0 0.3092E-01 diff --git a/Projects/GRIT_AGATA_GANIL/detector/grit_agata.detector b/Projects/GRIT_AGATA_GANIL/detector/grit_agata.detector new file mode 100644 index 0000000000000000000000000000000000000000..dfbd67d6c3eb1f6eed9b3f657e69657e7b4733c6 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/detector/grit_agata.detector @@ -0,0 +1,316 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 10 micrometer + RADIUS= 7.5 mm + MATERIAL= CD2 + ANGLE= 0 deg + X= 0 mm + Y= 0 mm + Z= 0 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias THIRDSTAGEFRONT + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias THIRDSTAGEBACK + Action= Replace + Value= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEFRONT + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEBACK + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEBARREL + Action= Replace + Value= 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 Annular Back +GaspardTracker Annular + Z= -156.5 mm + RMIN= 16 mm + RMAX= 52 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 Annular Front +GaspardTracker Annular + Z= 156.5 mm + RMIN= 16 mm + RMAX= 52 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 End-Cap Back +GaspardTracker Trapezoid + X128_Y128= 55.338 -14.346 -146.501 mm + X1_Y128= 55.338 14.346 -146.501 mm + X128_Y1= 138.519 -48.717 -69.236 mm + X1_Y1= 138.518 48.726 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GaspardTracker Trapezoid + X128_Y128= 49.215 29.045 -146.501 mm + X1_Y128= 28.986 49.274 -146.501 mm + X128_Y1= 132.395 63.500 -69.236 mm + X1_Y1= 63.492 132.401 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GaspardTracker Trapezoid + X128_Y128= 14.263 55.338 -146.501 mm + X1_Y128= -14.346 55.338 -146.501 mm + X128_Y1= 48.717 138.519 -69.236 mm + X1_Y1= -48.726 138.518 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GaspardTracker Trapezoid + X128_Y128= -29.045 49.215 -146.501 mm + X1_Y128= -49.274 28.986 -146.501 mm + X128_Y1= -63.500 132.395 -69.236 mm + X1_Y1= -132.401 63.492 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GaspardTracker Trapezoid + X128_Y128= -55.338 14.346 -146.501 mm + X1_Y128= -55.338 -14.346 -146.501 mm + X128_Y1= -138.519 48.717 -69.236 mm + X1_Y1= -138.518 -48.726 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GaspardTracker Trapezoid + X128_Y128= -49.215 -29.045 -146.501 mm + X1_Y128= -28.986 -49.274 -146.501 mm + X128_Y1= -132.395 -63.500 -69.236 mm + X1_Y1= -63.492 -132.401 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GaspardTracker Trapezoid + X128_Y128= -14.263 -55.338 -146.501 mm + X1_Y128= 14.346 -55.338 -146.501 mm + X128_Y1= -48.717 -138.519 -69.236 mm + X1_Y1= 48.726 -138.518 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GaspardTracker Trapezoid + X128_Y128= 29.045 -49.215 -146.501 mm + X1_Y128= 49.274 -28.986 -146.501 mm + X128_Y1= 63.500 -132.395 -69.236 mm + X1_Y1= 132.401 -63.492 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 Barrel +GaspardTracker Square + THETA= 90 deg + PHI= 0 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GaspardTracker Square + THETA= 90 deg + PHI= 45 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GaspardTracker Square + THETA= 90 deg + PHI= 90 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GaspardTracker Square + THETA= 90 deg + PHI= 135 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GaspardTracker Square + THETA= 90 deg + PHI= 180 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GaspardTracker Square + THETA= 90 deg + PHI= 225 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GaspardTracker Square + THETA= 90 deg + PHI= 270 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GaspardTracker Square + THETA= 90 deg + PHI= 315 deg + R= 143 mm + BETA= 0 0 0 deg + FIRSTSTAGE= 1 + SECONDSTAGE= 1 + THIRDSTAGE= 0 + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 Front-Cap Back +GaspardTracker Trapezoid + X128_Y128= 55.338 14.346 146.501 mm + X1_Y128= 55.338 -14.346 146.501 mm + X128_Y1= 138.518 48.726 69.237 mm + X1_Y1= 138.519 -48.717 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GaspardTracker Trapezoid + X128_Y128= 28.986 49.274 146.501 mm + X1_Y128= 49.215 29.045 146.501 mm + X128_Y1= 63.492 132.401 69.237 mm + X1_Y1= 132.395 63.500 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +GaspardTracker Trapezoid + X128_Y128= -14.346 55.338 146.501 mm + X1_Y128= 14.263 55.338 146.501 mm + X128_Y1= -48.726 138.518 69.237 mm + X1_Y1= 48.717 138.519 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GaspardTracker Trapezoid + X128_Y128= -49.274 28.986 146.501 mm + X1_Y128= -29.045 49.215 146.501 mm + X128_Y1= -132.401 63.492 69.237 mm + X1_Y1= -63.500 132.395 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GaspardTracker Trapezoid + X128_Y128= -55.338 -14.346 146.501 mm + X1_Y128= -55.338 14.346 146.501 mm + X128_Y1= -138.518 -48.726 69.237 mm + X1_Y1= -138.519 48.717 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GaspardTracker Trapezoid + X128_Y128= -28.986 -49.274 146.501 mm + X1_Y128= -49.215 -29.045 146.501 mm + X128_Y1= -63.492 -132.401 69.237 mm + X1_Y1= -132.395 -63.500 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +GaspardTracker Trapezoid + X128_Y128= 14.346 -55.338 146.501 mm + X1_Y128= -14.263 -55.338 146.501 mm + X128_Y1= 48.726 -138.518 69.237 mm + X1_Y1= -48.717 -138.519 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GaspardTracker Trapezoid + X128_Y128= 49.274 -28.986 146.501 mm + X1_Y128= 29.045 -49.215 146.501 mm + X128_Y1= 132.401 -63.492 69.237 mm + X1_Y1= 63.500 -132.395 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 diff --git a/Projects/GRIT_AGATA_GANIL/detector/small_grit_back.detector b/Projects/GRIT_AGATA_GANIL/detector/small_grit_back.detector new file mode 100644 index 0000000000000000000000000000000000000000..4ad02c72b4a252c76637cc7305cc02421c42e954 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/detector/small_grit_back.detector @@ -0,0 +1,120 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 10 micrometer + RADIUS= 7.5 mm + MATERIAL= CD2 + ANGLE= 0 deg + X= 0 mm + Y= 0 mm + Z= 0 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias THIRDSTAGEFRONT + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias THIRDSTAGEBACK + Action= Replace + Value= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEFRONT + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEBACK + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEBARREL + Action= Replace + Value= 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 End-Cap Back +GaspardTracker Trapezoid + X128_Y128= 55.338 -14.346 -146.501 mm + X1_Y128= 55.338 14.346 -146.501 mm + X128_Y1= 138.519 -48.717 -69.236 mm + X1_Y1= 138.518 48.726 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GaspardTracker Trapezoid + X128_Y128= 49.215 29.045 -146.501 mm + X1_Y128= 28.986 49.274 -146.501 mm + X128_Y1= 132.395 63.500 -69.236 mm + X1_Y1= 63.492 132.401 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +% GaspardTracker Trapezoid +% X128_Y128= 14.263 55.338 -146.501 mm +% X1_Y128= -14.346 55.338 -146.501 mm +% X128_Y1= 48.717 138.519 -69.236 mm +% X1_Y1= -48.726 138.518 -69.237 mm +% FIRSTSTAGE= 1 +% SECONDSTAGE= @SECONDSTAGEBACK +% THIRDSTAGE= @THIRDSTAGEBACK +% EnergyResolution= 50 +% VIS= all +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GaspardTracker Trapezoid + X128_Y128= -29.045 49.215 -146.501 mm + X1_Y128= -49.274 28.986 -146.501 mm + X128_Y1= -63.500 132.395 -69.236 mm + X1_Y1= -132.401 63.492 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GaspardTracker Trapezoid + X128_Y128= -55.338 14.346 -146.501 mm + X1_Y128= -55.338 -14.346 -146.501 mm + X128_Y1= -138.519 48.717 -69.236 mm + X1_Y1= -138.518 -48.726 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GaspardTracker Trapezoid + X128_Y128= -49.215 -29.045 -146.501 mm + X1_Y128= -28.986 -49.274 -146.501 mm + X128_Y1= -132.395 -63.500 -69.236 mm + X1_Y1= -63.492 -132.401 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +% GaspardTracker Trapezoid +% X128_Y128= -14.263 -55.338 -146.501 mm +% X1_Y128= 14.346 -55.338 -146.501 mm +% X128_Y1= -48.717 -138.519 -69.236 mm +% X1_Y1= 48.726 -138.518 -69.237 mm +% FIRSTSTAGE= 1 +% SECONDSTAGE= @SECONDSTAGEBACK +% THIRDSTAGE= @THIRDSTAGEBACK +% EnergyResolution= 50 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GaspardTracker Trapezoid + X128_Y128= 29.045 -49.215 -146.501 mm + X1_Y128= 49.274 -28.986 -146.501 mm + X128_Y1= 63.500 -132.395 -69.236 mm + X1_Y1= 132.401 -63.492 -69.237 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEBACK + THIRDSTAGE= @THIRDSTAGEBACK + EnergyResolution= 50 + VIS= all + diff --git a/Projects/GRIT_AGATA_GANIL/detector/small_grit_front.detector b/Projects/GRIT_AGATA_GANIL/detector/small_grit_front.detector new file mode 100644 index 0000000000000000000000000000000000000000..de2ac07aa231c28543b04534f8b5f82a050c44a6 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/detector/small_grit_front.detector @@ -0,0 +1,120 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 10 micrometer + RADIUS= 7.5 mm + MATERIAL= CD2 + ANGLE= 0 deg + X= 0 mm + Y= 0 mm + Z= 0 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias THIRDSTAGEFRONT + Action= Replace + Value= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias THIRDSTAGEBACK + Action= Replace + Value= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEFRONT + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEBACK + Action= Replace + Value= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Alias SECONDSTAGEBARREL + Action= Replace + Value= 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 Front-Cap Back +GaspardTracker Trapezoid + X128_Y128= 55.338 14.346 146.501 mm + X1_Y128= 55.338 -14.346 146.501 mm + X128_Y1= 138.518 48.726 69.237 mm + X1_Y1= 138.519 -48.717 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2 +GaspardTracker Trapezoid + X128_Y128= 28.986 49.274 146.501 mm + X1_Y128= 49.215 29.045 146.501 mm + X128_Y1= 63.492 132.401 69.237 mm + X1_Y1= 132.395 63.500 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 +% GaspardTracker Trapezoid +% X128_Y128= -14.346 55.338 146.501 mm +% X1_Y128= 14.263 55.338 146.501 mm +% X128_Y1= -48.726 138.518 69.237 mm +% X1_Y1= 48.717 138.519 69.236 mm +% FIRSTSTAGE= 1 +% SECONDSTAGE= @SECONDSTAGEFRONT +% THIRDSTAGE= @THIRDSTAGEFRONT +% EnergyResolution= 50 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 +GaspardTracker Trapezoid + X128_Y128= -49.274 28.986 146.501 mm + X1_Y128= -29.045 49.215 146.501 mm + X128_Y1= -132.401 63.492 69.237 mm + X1_Y1= -63.500 132.395 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +GaspardTracker Trapezoid + X128_Y128= -55.338 -14.346 146.501 mm + X1_Y128= -55.338 14.346 146.501 mm + X128_Y1= -138.518 -48.726 69.237 mm + X1_Y1= -138.519 48.717 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6 +GaspardTracker Trapezoid + X128_Y128= -28.986 -49.274 146.501 mm + X1_Y128= -49.215 -29.045 146.501 mm + X128_Y1= -63.492 -132.401 69.237 mm + X1_Y1= -132.395 -63.500 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%7 +% GaspardTracker Trapezoid +% X128_Y128= 14.346 -55.338 146.501 mm +% X1_Y128= -14.263 -55.338 146.501 mm +% X128_Y1= 48.726 -138.518 69.237 mm +% X1_Y1= -48.717 -138.519 69.236 mm +% FIRSTSTAGE= 1 +% SECONDSTAGE= @SECONDSTAGEFRONT +% THIRDSTAGE= @THIRDSTAGEFRONT +% EnergyResolution= 50 +% VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 +GaspardTracker Trapezoid + X128_Y128= 49.274 -28.986 146.501 mm + X1_Y128= 29.045 -49.215 146.501 mm + X128_Y1= 132.401 -63.492 69.237 mm + X1_Y1= 63.500 -132.395 69.236 mm + FIRSTSTAGE= 1 + SECONDSTAGE= @SECONDSTAGEFRONT + THIRDSTAGE= @THIRDSTAGEFRONT + EnergyResolution= 50 + VIS= all +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 diff --git a/Projects/GRIT_AGATA_GANIL/reaction/132Sndp.reaction b/Projects/GRIT_AGATA_GANIL/reaction/132Sndp.reaction new file mode 100644 index 0000000000000000000000000000000000000000..e2f516a7b8050b9095941533867282bc6a72781c --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/132Sndp.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 132Sn + Energy= 1320 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 132Sn + Target= 2H + Light= 1H + Heavy= 133Sn + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.0 MeV + CrossSectionPath= 132Sndp_10A_MeV_2f7_ZR_FRC.lis CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/14Odp.reaction b/Projects/GRIT_AGATA_GANIL/reaction/14Odp.reaction new file mode 100644 index 0000000000000000000000000000000000000000..8e5834b66d744c2a2dad177514f4ac68cbf34396 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/14Odp.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 14O + Energy= 140 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 14O + Target= 2H + Light= 1H + Heavy= 15O + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.0 MeV + CrossSectionPath= 132Sndp_10A_MeV_2f7_ZR_FRC.lis CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/14Opd.reaction b/Projects/GRIT_AGATA_GANIL/reaction/14Opd.reaction new file mode 100644 index 0000000000000000000000000000000000000000..83afa3e501f84793807a888d4809842496777888 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/14Opd.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 14O + Energy= 1400 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 14O + Target= 1H + Light= 2H + Heavy= 13O + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.0 MeV + CrossSectionPath= 132Sndp_10A_MeV_2f7_ZR_FRC.lis CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/56Nidp.reaction b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp.reaction new file mode 100644 index 0000000000000000000000000000000000000000..6b777a66bc453918a9cc61d64eba690c00d8435b --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 56Ni + Energy= 560 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 56Ni + Target= 2H + Light= 1H + Heavy= 57Ni + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.0 MeV + CrossSectionPath= cross_sections/56Ni_dp_dwba_l1.txt CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_07685_l3.reaction b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_07685_l3.reaction new file mode 100644 index 0000000000000000000000000000000000000000..5687c1a1acc8686b4a4cb00a85deaeec4633be73 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_07685_l3.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 56Ni + Energy= 560 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 56Ni + Target= 2H + Light= 1H + Heavy= 57Ni + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.7865 MeV + CrossSectionPath= cross_sections/56Ni_dp_dwba_Ex07685_l3.txt + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_1112_l1.reaction b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_1112_l1.reaction new file mode 100644 index 0000000000000000000000000000000000000000..25672310ac46b975e1e6bcb03639bbc821227c07 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_1112_l1.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 56Ni + Energy= 560 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 56Ni + Target= 2H + Light= 1H + Heavy= 57Ni + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 1.1126 MeV + CrossSectionPath= cross_sections/56Ni_dp_dwba_Ex1112_l1.txt CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_3701_l4.reaction b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_3701_l4.reaction new file mode 100644 index 0000000000000000000000000000000000000000..2cbe2a2ff395c0242056ee50c01339278146b52a --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_3701_l4.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 56Ni + Energy= 560 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 56Ni + Target= 2H + Light= 1H + Heavy= 57Ni + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 3.701 MeV + CrossSectionPath= cross_sections/56Ni_dp_dwba_Ex3701_l4.txt CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_gs.reaction b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_gs.reaction new file mode 100644 index 0000000000000000000000000000000000000000..6b777a66bc453918a9cc61d64eba690c00d8435b --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/reaction/56Nidp_gs.reaction @@ -0,0 +1,31 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 60Fe(d,p)61Fe reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad +Beam + Particle= 56Ni + Energy= 560 + SigmaEnergy= 0 MeV + SigmaThetaX= 0.42 deg + SigmaPhiY= 0.42 deg + SigmaX= 1.7 mm + SigmaY= 1.7 mm + MeanThetaX= 0.3 deg + MeanPhiY= 0 deg + MeanX= 1.0 mm + MeanY= 2.0 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 56Ni + Target= 2H + Light= 1H + Heavy= 57Ni + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.0 MeV + CrossSectionPath= cross_sections/56Ni_dp_dwba_l1.txt CS + HalfOpenAngleMin= 0 deg + HalfOpenAngleMax= 180 deg + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Projects/GRIT_AGATA_GANIL/run.mac b/Projects/GRIT_AGATA_GANIL/run.mac new file mode 100644 index 0000000000000000000000000000000000000000..506556ed2882f22f4f6013ba592297aba63dec25 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/run.mac @@ -0,0 +1 @@ +/run/beamOn 100000 diff --git a/Projects/GRIT_AGATA_GANIL/run_simu56Ni.sh b/Projects/GRIT_AGATA_GANIL/run_simu56Ni.sh new file mode 100755 index 0000000000000000000000000000000000000000..183f93e0c4c1e4a2e4784aac6df195e1c22073b2 --- /dev/null +++ b/Projects/GRIT_AGATA_GANIL/run_simu56Ni.sh @@ -0,0 +1,4 @@ +npsimulation -D detector/small_grit_back.detector -E reaction/56Nidp_gs.reaction -B run.mac -O Simu56Nidp_gs.root & +npsimulation -D detector/small_grit_back.detector -E reaction/56Nidp_07685_l3.reaction -B run.mac -O Simu56Nidp_07685_l3.root & +npsimulation -D detector/small_grit_back.detector -E reaction/56Nidp_1112_l1.reaction -B run.mac -O Simu56Nidp_1112_l1.root & +npsimulation -D detector/small_grit_back.detector -E reaction/56Nidp_3701_l4.reaction -B run.mac -O Simu56Nidp_3701_l4.root & diff --git a/Projects/PISTA/GEF.source b/Projects/PISTA/GEF.source new file mode 100755 index 0000000000000000000000000000000000000000..c11d02e25794b76f88dd29c94ad816bb1dfd0020 --- /dev/null +++ b/Projects/PISTA/GEF.source @@ -0,0 +1,21 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Energy are given in MeV , Position in mm % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +GEFReader + GEFversion= 2023.33 + InputDataFile= /home/sofia/Physics/Codes/GEF_2024.3.3/out/240Pu_8MeV.lmd + x0= 0 + y0= 0 + z0= 0 mm + TwoBodyReaction= 238U(12C,10Be)240Pu@1428 + FissioningSystem= 240Pu + SigmaX= 0 mm + SigmaY= 0 mm + Particle= fragments +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Supported particle type: proton, neutron, gamma, fragments. +% If you want to see all particles of the file, you may give no argument. +% KineticEnergy_FS gives additional kinetic energy along Z and boosts fragments +% and evaporated particles accordingly. To be refined to various angles. diff --git a/Projects/PISTA/pista.detector b/Projects/PISTA/pista.detector new file mode 100644 index 0000000000000000000000000000000000000000..6429b8458d912747af604fde2c06cd8babafe171 --- /dev/null +++ b/Projects/PISTA/pista.detector @@ -0,0 +1,90 @@ +%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 0.44 micrometer + RADIUS= 5 mm + MATERIAL= C + ANGLE= 0 deg + X= 0 mm + Y= 0 mm + Z= 0 mm + +%%%%%%%%%%%%%%%%%%%% +Vamos + R= 162.7 mm + Theta= 20 deg + +Vamos TMW1 + Z = 0 mm + Gas= iC4H10 + Pressure= 0.01 bar + +Vamos TMW2 + Z = 109.3 mm + Gas= iC4H10 + Pressure= 0.01 bar + + + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= 36.71 96.1 50.7 + POS_B= -35.92 95.8 51.3 + POS_C= -19.35 56.5 93.4 + POS_D= 20.8 56.6 93.1 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= -42.15 93.1 51.1 + POS_B= -93.62 41.8 51.6 + POS_C= -54.12 25.3 93.6 + POS_D= -25.66 53.6 93.4 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= -95.98 35.6 51.3 + POS_B= -95.63 -37.1 51.5 + POS_C= -56.22 -20.7 93.7 + POS_D= -56.39 19.5 93.6 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= -93.34 -43.5 50.9 + POS_B= -41.88 -94.8 51.3 + POS_C= -25.41 -55.2 93.2 + POS_D= -53.84 -26.8 93.0 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= -35.66 -97.1 51.3 + POS_B= 36.98 -96.9 51.1 + POS_C= 20.9 -57.4 93.4 + POS_D= -19.24 -57.6 93.5 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= 43.66 -94.4 50.9 + POS_B= 95.19 -43.3 50.8 + POS_C= 56.03 -26.6 93.1 + POS_D= 27.54 -54.9 93.2 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= 96.87 -36.8 50.3 + POS_B= 97.41 35.8 50.4 + POS_C= 57.83 20.0 92.6 + POS_D= 57.52 -20.1 92.6 + +%%%%%%%%%%%%%%%%%%%% +PISTA + VERSION= 1 + POS_A= 94.39 42.0 50.8 + POS_B= 42.94 93.3 50.7 + POS_C= 26.47 54.1 93.0 + POS_D= 54.9 25.7 93.1 diff --git a/Projects/PISTA/project.config b/Projects/PISTA/project.config new file mode 100644 index 0000000000000000000000000000000000000000..c519edf640d2dcbca6b7a9befa756c910634213c --- /dev/null +++ b/Projects/PISTA/project.config @@ -0,0 +1,5 @@ +Project pista + AnalysisOutput= ./root/analysis + SimulationOutput= ./root/simulation + EnergyLoss= ./EnergyLossTable +