From 0279bad8959a2a944551d76f4c0665a70bb00275 Mon Sep 17 00:00:00 2001 From: adrien-matta <a.matta@surrey.ac.uk> Date: Sat, 28 Jul 2018 15:27:37 +0200 Subject: [PATCH] * Adding Default calibration to MUST2 Time - Si T is now in ADC channel out of the simulation - Default calibration are applied --- Examples/Example1/ShowResults.C | 2 +- Examples/Example1/configs/ConfigMust2.dat | 4 +- Examples/Example1/cuts/ETOF.root | Bin 4279 -> 5393 bytes NPLib/Core/NPCore.cxx | 22 +++++++++ NPLib/Core/NPCore.h | 2 + NPLib/Detectors/MUST2/TMust2Physics.cxx | 24 ++++++--- NPSimulation/Detectors/MUST2/MUST2Array.cc | 54 +++++++++++++-------- NPSimulation/Detectors/MUST2/MUST2Array.hh | 2 +- 8 files changed, 76 insertions(+), 34 deletions(-) diff --git a/Examples/Example1/ShowResults.C b/Examples/Example1/ShowResults.C index 3a2792926..eabef9bf3 100644 --- a/Examples/Example1/ShowResults.C +++ b/Examples/Example1/ShowResults.C @@ -36,7 +36,7 @@ void ShowResults(){ // E-TOF c1->cd(2); - chain->Draw("-MUST2.Si_T:SSSD.Energy+MUST2.Si_E>>hIDT(1000,0,35,1000,-30,0)","MUST2.CsI_E<0 && MUST2.TelescopeNumber<5","colz"); + chain->Draw("MUST2.Si_T:SSSD.Energy+MUST2.Si_E>>hIDT(1000,0,35,500,450,500)","MUST2.CsI_E<0 && MUST2.TelescopeNumber<5","colz"); ETOF->Draw("same"); diff --git a/Examples/Example1/configs/ConfigMust2.dat b/Examples/Example1/configs/ConfigMust2.dat index bcbc385cb..bebb0bf9e 100755 --- a/Examples/Example1/configs/ConfigMust2.dat +++ b/Examples/Example1/configs/ConfigMust2.dat @@ -1,5 +1,5 @@ ConfigMust2 - MAX_STRIP_MULTIPLICITY 1 + MAX_STRIP_MULTIPLICITY 100 STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA 5 STRIP_ENERGY_MATCHING_SIGMA 0.02 DISABLE_CHANNEL MM1STRY12 @@ -14,6 +14,4 @@ ConfigMust2 DISABLE_ALL MM6 DISABLE_ALL MM7 DISABLE_ALL MM8 - SI_X_E_RAW_THRESHOLD 0 - CSI_E_RAW_THRESHOLD 0 CSI_SIZE 256 diff --git a/Examples/Example1/cuts/ETOF.root b/Examples/Example1/cuts/ETOF.root index 067d548e7c6f2d4adc224047d2a23700cc380032..a57897ebf177e383f164c5d592085d98cb81da22 100644 GIT binary patch literal 5393 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 delta 4111 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 aP?f*X%l`olyMXf1T}U(Lra+~1!2ba^GO7On diff --git a/NPLib/Core/NPCore.cxx b/NPLib/Core/NPCore.cxx index 04fda36c4..35c76377e 100644 --- a/NPLib/Core/NPCore.cxx +++ b/NPLib/Core/NPCore.cxx @@ -65,3 +65,25 @@ namespace NPL{ std::string NPL::itoa(const int& i){ return NPL::itoa_array[i]; } +//////////////////////////////////////////////////////////////////////////////// +unsigned int NPL::EnergyToADC(const double& E, const double& Emin, const double& Emax, const int& Pedestal, const int& ADCMax){ + double Crange = ADCMax - Pedestal; + double Erange = Emax - Emin; + + // Standard case where larger ADC channel means larger Energy + if(Crange > 0){ + double answer = Crange*E/Erange + Pedestal; + if(answer > ADCMax) + answer = ADCMax; + return answer; + } + // Reverse coding case where larger ADC channel means smaller Energy + else{ + double answer = Crange*E/Erange + Pedestal; + if(answer < ADCMax) + answer = ADCMax; + return answer; + } + + return -1000; +} diff --git a/NPLib/Core/NPCore.h b/NPLib/Core/NPCore.h index 9f14ffadd..0cf9ac195 100644 --- a/NPLib/Core/NPCore.h +++ b/NPLib/Core/NPCore.h @@ -28,5 +28,7 @@ namespace NPL{ void SendWarning(std::string Class, std::string Warning); void SendInformation(std::string Class, std::string Information); void SendErrorAndExit(std::string Class,std::string Error); + // For use to simulate electronic + unsigned int EnergyToADC(const double& E, const double& Emin, const double& Emax, const int& Pedestal, const int& ADCMax); } #endif diff --git a/NPLib/Detectors/MUST2/TMust2Physics.cxx b/NPLib/Detectors/MUST2/TMust2Physics.cxx index 7c5f7d735..41a672f0f 100644 --- a/NPLib/Detectors/MUST2/TMust2Physics.cxx +++ b/NPLib/Detectors/MUST2/TMust2Physics.cxx @@ -896,24 +896,32 @@ map< string , TH1*> TMust2Physics::GetSpectra() { void TMust2Physics::AddParameterToCalibrationManager() { CalibrationManager* Cal = CalibrationManager::getInstance(); + // Good for simulation, close to typical values + vector<double> standardX = {-63, 63./8192.}; + vector<double> standardY = {63, -63./8192.}; + vector<double> standardCsI = {-250, 250./8192.}; + vector<double> standardSiLi = {-250, 250./8192.}; + vector<double> standardT = {-1000, 1000./8192.}; + + for(int i = 0 ; i < m_NumberOfTelescope ; ++i){ for( int j = 0 ; j < 128 ; ++j){ - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_E") ; - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_E") ; - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_T") ; - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_T") ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_E",standardX) ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_E",standardY) ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_Si_X"+NPL::itoa(j+1)+"_T",standardT ) ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_Si_Y"+NPL::itoa(j+1)+"_T",standardT ) ; } for( int j = 0 ; j < 16 ; ++j){ - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_E") ; - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_T") ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_E",standardSiLi) ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_SiLi"+NPL::itoa(j+1)+"_T",standardT ) ; } for( int j = 0 ; j < 16 ; ++j){ - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_E") ; - Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_T") ; + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_E","MUST2_T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_E",standardCsI); + Cal->AddParameter("MUST2", "T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_T","MUST2_T"+NPL::itoa(i+1)+"_CsI"+NPL::itoa(j+1)+"_T",standardT ) ; } } diff --git a/NPSimulation/Detectors/MUST2/MUST2Array.cc b/NPSimulation/Detectors/MUST2/MUST2Array.cc index 6796a6dfa..950046182 100644 --- a/NPSimulation/Detectors/MUST2/MUST2Array.cc +++ b/NPSimulation/Detectors/MUST2/MUST2Array.cc @@ -44,7 +44,8 @@ #include "SiliconScorers.hh" #include "CalorimeterScorers.hh" #include "NPOptionManager.h" - +// NPL +#include "NPCore.h" //ROOT #include "RootOutput.h" @@ -758,9 +759,10 @@ void MUST2Array::ReadSensitive(const G4Event* event){ if(r==0){ trig.insert(detectorNbr); // Energy - m_Event->SetStripXE(detectorNbr,b+1,energyX); + m_Event->SetStripXE(detectorNbr,b+1,NPL::EnergyToADC(energyX,0,63,8192,16384)); // Time - m_Event->SetStripXT(detectorNbr,b+1,RandGauss::shoot(time, ResoTimeMust)); + double timeX = TimeOffset - RandGauss::shoot(time, ResoTimeMust); + m_Event->SetStripXT(detectorNbr,b+1,NPL::EnergyToADC(timeX,0,1000,8192,16384)); } else{ // Interstrip X, keep maximum shared energy double rand = G4UniformRand(); @@ -769,9 +771,10 @@ void MUST2Array::ReadSensitive(const G4Event* event){ if(energyX>0.1*keV){ trig.insert(detectorNbr); // Energy - m_Event->SetStripXE(detectorNbr,b+1,energyX) ; + m_Event->SetStripXE(detectorNbr,b+1,NPL::EnergyToADC(energyX,0,63,8192,16384)) ; // Time - m_Event->SetStripXT(detectorNbr,b+1,RandGauss::shoot(time, ResoTimeMust)); + double timeX = TimeOffset - RandGauss::shoot(time, ResoTimeMust); + m_Event->SetStripXT(detectorNbr,b+1,NPL::EnergyToADC(timeX,0,1000,8192,16384)); } } else{ @@ -780,10 +783,11 @@ void MUST2Array::ReadSensitive(const G4Event* event){ trig.insert(detectorNbr); // Energy - m_Event->SetStripXE(detectorNbr,g+1,energyX) ; + m_Event->SetStripXE(detectorNbr,g+1,NPL::EnergyToADC(energyX,0,63,8192,16384)) ; // Time - m_Event->SetStripXT(detectorNbr,g+1,RandGauss::shoot(time, ResoTimeMust)); - } + double timeX = TimeOffset - RandGauss::shoot(time, ResoTimeMust); + m_Event->SetStripXT(detectorNbr,b+1,NPL::EnergyToADC(timeX,0,1000,8192,16384)); + } } } } @@ -799,10 +803,11 @@ void MUST2Array::ReadSensitive(const G4Event* event){ if(r==0){ trig.insert(detectorNbr); // Energy - m_Event->SetStripYE(detectorNbr,b+1,energyY); + m_Event->SetStripYE(detectorNbr,b+1,NPL::EnergyToADC(energyY,0,63,8192,0)); // Time - m_Event->SetStripYT(detectorNbr,b+1,RandGauss::shoot(time, ResoTimeMust)); - } + double timeY = TimeOffset - RandGauss::shoot(time, ResoTimeMust); + m_Event->SetStripYT(detectorNbr,b+1,NPL::EnergyToADC(timeY,0,1000,8192,16384)); + } else{ // Interstrip Y, keep both strip with shared energy double rand = G4UniformRand(); double energyY1 = rand*energyY; @@ -810,19 +815,22 @@ void MUST2Array::ReadSensitive(const G4Event* event){ trig.insert(detectorNbr); // Energy - m_Event->SetStripYE(detectorNbr,b+1,energyY1); + m_Event->SetStripYE(detectorNbr,b+1,NPL::EnergyToADC(energyY1,0,63,8192,0)); + // Time - m_Event->SetStripYT(detectorNbr,b+1,RandGauss::shoot(time, ResoTimeMust)); - } + double timeY = TimeOffset - RandGauss::shoot(time, ResoTimeMust); + m_Event->SetStripYT(detectorNbr,b+1,NPL::EnergyToADC(timeY,0,1000,8192,16384)); + } if(energyY1>0.1*keV){ trig.insert(detectorNbr); double energyY2 = (1-rand)*energyY; // Energy - m_Event->SetStripYE(detectorNbr,g+1,energyY2); + m_Event->SetStripYE(detectorNbr,g+1,NPL::EnergyToADC(energyY2,0,63,8192,0)); // Time - m_Event->SetStripYT(detectorNbr,g+1,RandGauss::shoot(time, ResoTimeMust)); - } + double timeY = TimeOffset - RandGauss::shoot(time, ResoTimeMust); + m_Event->SetStripYT(detectorNbr,b+1,NPL::EnergyToADC(timeY,0,1000,8192,16384)); + } } } @@ -859,8 +867,10 @@ void MUST2Array::ReadSensitive(const G4Event* event){ for(SiLi_itr = SiLiHitMap->GetMap()->begin(); SiLi_itr!=SiLiHitMap->GetMap()->end() ; SiLi_itr++){ G4double* Info = *(SiLi_itr->second); if(Info[7]==*itr){//matching telescope number - m_Event->SetSiLiE(Info[7],Info[8],RandGauss::shoot(Info[0],ResoSiLi)); - m_Event->SetSiLiT(Info[7],Info[8],RandGauss::shoot(Info[1],ResoTimeMust)); + double ESiLi = RandGauss::shoot(Info[0],ResoSiLi); + m_Event->SetSiLiE(Info[7],Info[8],NPL::EnergyToADC(ESiLi,0,250,8192,16384)); + double timeSiLi = RandGauss::shoot(Info[1],ResoTimeMust); + m_Event->SetSiLiT(Info[7],Info[8],NPL::EnergyToADC(timeSiLi,0,1000,16384,8192)); } } } @@ -871,8 +881,10 @@ void MUST2Array::ReadSensitive(const G4Event* event){ G4double* Info = *(CsI_itr->second); if(Info[7]==*itr){//matching telescope number - m_Event->SetCsIE(Info[7],Info[8],RandGauss::shoot(Info[0],ResoCsI)); - m_Event->SetCsIT(Info[7],Info[8],RandGauss::shoot(Info[1],ResoTimeMust)); + double ECsI = RandGauss::shoot(Info[0],ResoCsI); + m_Event->SetCsIE(Info[7],Info[8],NPL::EnergyToADC(ECsI,0,250,8192,16384)); + double timeCsI = RandGauss::shoot(Info[1],ResoTimeMust); + m_Event->SetCsIT(Info[7],Info[8],NPL::EnergyToADC(timeCsI,0,1000,16384,8192)); } } } diff --git a/NPSimulation/Detectors/MUST2/MUST2Array.hh b/NPSimulation/Detectors/MUST2/MUST2Array.hh index ad42412f7..883b62a01 100644 --- a/NPSimulation/Detectors/MUST2/MUST2Array.hh +++ b/NPSimulation/Detectors/MUST2/MUST2Array.hh @@ -39,7 +39,7 @@ namespace MUST2 const G4double ResoSiLi = 0.028 ;// = 130 keV of resolution // Unit is MeV/2.35 const G4double ResoCsI = 0.08 ;// = 188 kev of resolution // Unit is MeV/2.35 const G4double ResoStrip = 0.0149 ;// 0.0223 = 52keV of Resolution // Unit is MeV/2.35 14.861996 - + const G4double TimeOffset = 500 ;// 500 ns stop // Geometry const G4double FaceFront = 11.*cm ; const G4double FaceBack = 16.5*cm ; -- GitLab