diff --git a/NPLib/Detectors/GeTAMU/TGeTAMUData.cxx b/NPLib/Detectors/GeTAMU/TGeTAMUData.cxx index 106f47a8a0c81b0924f98e7c5c1a852481ba56f1..191eb57f0851b85d6a9ffaa4dd2584dae87d956e 100644 --- a/NPLib/Detectors/GeTAMU/TGeTAMUData.cxx +++ b/NPLib/Detectors/GeTAMU/TGeTAMUData.cxx @@ -9,7 +9,7 @@ * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * * * * Creation Date : November 2012 * - * Last update : November 2016 * + * Last update : December 2016 m.moukaddam@suurey.ac.uk * *---------------------------------------------------------------------------* * Decription: * * This class hold the GeTAMU raw data * @@ -38,33 +38,51 @@ TGeTAMUData::~TGeTAMUData(){ ///////////////////////// void TGeTAMUData::Clear(){ - fGeTAMU_Core_CloverNbr.clear(); - fGeTAMU_Core_CrystalNbr.clear(); + fGeTAMU_Core_CloverNbr_E.clear(); + fGeTAMU_Core_CrystalNbr_E.clear(); fGeTAMU_Core_Energy.clear(); + + fGeTAMU_Core_CloverNbr_T.clear(); + fGeTAMU_Core_CrystalNbr_T.clear(); fGeTAMU_Core_Time.clear(); - fGeTAMU_Segment_CloverNbr.clear(); - fGeTAMU_Segment_SegmentNbr.clear(); + fGeTAMU_Segment_CloverNbr_E.clear(); + fGeTAMU_Segment_SegmentNbr_E.clear(); fGeTAMU_Segment_Energy.clear(); + + fGeTAMU_Segment_CloverNbr_T.clear(); + fGeTAMU_Segment_SegmentNbr_T.clear(); fGeTAMU_Segment_Time.clear(); } ///////////////////////// void TGeTAMUData::Dump() const{ - cout << "Core Multiplicity = " << fGeTAMU_Core_CloverNbr.size() << endl; - for (unsigned int i = 0; i < fGeTAMU_Core_CloverNbr.size(); i++){ - cout << " Clover: " << fGeTAMU_Core_CloverNbr[i] - << " Crystal: " << fGeTAMU_Core_CrystalNbr[i] - << " Energy: " << fGeTAMU_Core_Energy[i] + cout << "Core Energy Multiplicity = " << fGeTAMU_Core_CloverNbr_E.size() << endl; + for (unsigned int i = 0; i < fGeTAMU_Core_CloverNbr_E.size(); i++){ + cout << " Clover: " << fGeTAMU_Core_CloverNbr_E[i] + << " Crystal: " << fGeTAMU_Core_CrystalNbr_E[i] + << " Energy: " << fGeTAMU_Core_Energy[i] << endl; + } + + cout << "Core Time Multiplicity = " << fGeTAMU_Core_CloverNbr_T.size() << endl; + for (unsigned int i = 0; i < fGeTAMU_Core_CloverNbr_T.size(); i++){ + cout << " Clover: " << fGeTAMU_Core_CloverNbr_T[i] + << " Crystal: " << fGeTAMU_Core_CrystalNbr_T[i] << " Time: " << fGeTAMU_Core_Time[i] << endl; } - cout << "Segment Multiplicity = " << fGeTAMU_Segment_CloverNbr.size() << endl; - for (unsigned int i = 0; i < fGeTAMU_Segment_CloverNbr.size(); i++){ - cout << " Clover: " << fGeTAMU_Segment_CloverNbr[i] - << " Segment: " << fGeTAMU_Segment_SegmentNbr[i] - << " Energy: " << fGeTAMU_Segment_Energy[i] + cout << "Segment Energy Multiplicity = " << fGeTAMU_Segment_CloverNbr_E.size() << endl; + for (unsigned int i = 0; i < fGeTAMU_Segment_CloverNbr_E.size(); i++){ + cout << " Clover: " << fGeTAMU_Segment_CloverNbr_E[i] + << " Segment: " << fGeTAMU_Segment_SegmentNbr_E[i] + << " Energy: " << fGeTAMU_Segment_Energy[i] << endl; + } + + cout << "Segment Time Multiplicity = " << fGeTAMU_Segment_CloverNbr_T.size() << endl; + for (unsigned int i = 0; i < fGeTAMU_Segment_CloverNbr_T.size(); i++){ + cout << " Clover: " << fGeTAMU_Segment_CloverNbr_T[i] + << " Segment: " << fGeTAMU_Segment_SegmentNbr_T[i] << " Time: " << fGeTAMU_Segment_Time[i] << endl; } diff --git a/NPLib/Detectors/GeTAMU/TGeTAMUData.h b/NPLib/Detectors/GeTAMU/TGeTAMUData.h index f6cd37c2a01bd25087eee268f7068ea5ebf02ece..a97a2d422806752d92fbf2321023e5368cd3424e 100644 --- a/NPLib/Detectors/GeTAMU/TGeTAMUData.h +++ b/NPLib/Detectors/GeTAMU/TGeTAMUData.h @@ -11,7 +11,7 @@ * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * * * * Creation Date : 2016 * - * Last update : * + * Last update : December 2016 m.moukaddam@suurey.ac.uk * *---------------------------------------------------------------------------* * Decription: * * This class hold the GeTAMU raw data * @@ -34,14 +34,18 @@ class TGeTAMUData : public TObject { private: // GeTAMU // Core - vector<unsigned short> fGeTAMU_Core_CloverNbr; - vector<unsigned short> fGeTAMU_Core_CrystalNbr; + vector<unsigned short> fGeTAMU_Core_CloverNbr_E; + vector<unsigned short> fGeTAMU_Core_CrystalNbr_E; vector<double> fGeTAMU_Core_Energy; + vector<unsigned short> fGeTAMU_Core_CloverNbr_T; + vector<unsigned short> fGeTAMU_Core_CrystalNbr_T; vector<double> fGeTAMU_Core_Time; // Segment - vector<unsigned short> fGeTAMU_Segment_CloverNbr; - vector<unsigned short> fGeTAMU_Segment_SegmentNbr; + vector<unsigned short> fGeTAMU_Segment_CloverNbr_E; + vector<unsigned short> fGeTAMU_Segment_SegmentNbr_E; vector<double> fGeTAMU_Segment_Energy; + vector<unsigned short> fGeTAMU_Segment_CloverNbr_T; + vector<unsigned short> fGeTAMU_Segment_SegmentNbr_T; vector<double> fGeTAMU_Segment_Time; @@ -54,48 +58,70 @@ public: void Dump() const; ///////////////////// SETTERS //////////////////////// - inline void SetCoreCloverNbr(const unsigned short &CoreCloverNbr){fGeTAMU_Core_CloverNbr.push_back(CoreCloverNbr); } - inline void SetCoreCrystalNbr(const unsigned short &CoreCrystalNbr){fGeTAMU_Core_CrystalNbr.push_back(CoreCrystalNbr);} + inline void SetCoreCloverNbrE(const unsigned short &CoreCloverNbr){fGeTAMU_Core_CloverNbr_E.push_back(CoreCloverNbr); } + inline void SetCoreCrystalNbrE(const unsigned short &CoreCrystalNbr){fGeTAMU_Core_CrystalNbr_E.push_back(CoreCrystalNbr);} inline void SetCoreEnergy(const double &CoreEnergy){fGeTAMU_Core_Energy.push_back(CoreEnergy);} + + inline void SetCoreCloverNbrT(const unsigned short &CoreCloverNbr){fGeTAMU_Core_CloverNbr_T.push_back(CoreCloverNbr); } + inline void SetCoreCrystalNbrT(const unsigned short &CoreCrystalNbr){fGeTAMU_Core_CrystalNbr_T.push_back(CoreCrystalNbr);} inline void SetCoreTime(const double &CoreTime){fGeTAMU_Core_Time.push_back(CoreTime);} - inline void SetCore(const unsigned short &CoreCloverNbr, + + inline void SetCoreE(const unsigned short &CoreCloverNbr, + const unsigned short &CoreCrystalNbr, + const double &CoreEnergy){ + fGeTAMU_Core_CloverNbr_E.push_back(CoreCloverNbr); + fGeTAMU_Core_CrystalNbr_E.push_back(CoreCrystalNbr); + fGeTAMU_Core_Energy.push_back(CoreEnergy);} + + inline void SetCoreT(const unsigned short &CoreCloverNbr, const unsigned short &CoreCrystalNbr, - const double &CoreEnergy, const double &CoreTime){ - fGeTAMU_Core_CloverNbr.push_back(CoreCloverNbr); - fGeTAMU_Core_CrystalNbr.push_back(CoreCrystalNbr); - fGeTAMU_Core_Energy.push_back(CoreEnergy); - fGeTAMU_Core_Time.push_back(CoreTime); - }; + fGeTAMU_Core_CloverNbr_T.push_back(CoreCloverNbr); + fGeTAMU_Core_CrystalNbr_T.push_back(CoreCrystalNbr); + fGeTAMU_Core_Time.push_back(CoreTime);} - inline void SetSegmentCloverNbr(const unsigned short &SegmentCloverNbr){fGeTAMU_Segment_CloverNbr.push_back(SegmentCloverNbr); } - inline void SetSegmentSegmentNbr(const unsigned short &SegmentNbr){fGeTAMU_Segment_SegmentNbr.push_back(SegmentNbr);} + inline void SetSegmentCloverNbrE(const unsigned short &SegmentCloverNbr){fGeTAMU_Segment_CloverNbr_E.push_back(SegmentCloverNbr); } + inline void SetSegmentSegmentNbrE(const unsigned short &SegmentNbr){fGeTAMU_Segment_SegmentNbr_E.push_back(SegmentNbr);} inline void SetSegmentEnergy(const double &SegmentEnergy){fGeTAMU_Segment_Energy.push_back(SegmentEnergy);} + + inline void SetSegmentCloverNbrT(const unsigned short &SegmentCloverNbr){fGeTAMU_Segment_CloverNbr_T.push_back(SegmentCloverNbr); } + inline void SetSegmentSegmentNbrT(const unsigned short &SegmentNbr){fGeTAMU_Segment_SegmentNbr_T.push_back(SegmentNbr);} inline void SetSegmentTime(const double &SegmentTime){fGeTAMU_Segment_Time.push_back(SegmentTime);} - inline void SetSegment(const unsigned short &SegmentCloverNbr, + + inline void SetSegmentE(const unsigned short &SegmentCloverNbr, const unsigned short &SegmentNbr, - const double &SegmentEnergy, - const double &SegmentTime){ - fGeTAMU_Segment_CloverNbr.push_back(SegmentCloverNbr); - fGeTAMU_Segment_SegmentNbr.push_back(SegmentNbr); - fGeTAMU_Segment_Energy.push_back(SegmentEnergy); - fGeTAMU_Segment_Time.push_back(SegmentTime); - }; + const double &SegmentEnergy){ + fGeTAMU_Segment_CloverNbr_E.push_back(SegmentCloverNbr); + fGeTAMU_Segment_SegmentNbr_E.push_back(SegmentNbr); + fGeTAMU_Segment_Energy.push_back(SegmentEnergy);}; + inline void SetSegmentT(const unsigned short &SegmentCloverNbr, + const unsigned short &SegmentNbr, + const double &SegmentTime){ + fGeTAMU_Segment_CloverNbr_T.push_back(SegmentCloverNbr); + fGeTAMU_Segment_SegmentNbr_T.push_back(SegmentNbr); + fGeTAMU_Segment_Time.push_back(SegmentTime);}; ///////////////////// GETTERS //////////////////////// - inline unsigned short GetCoreCloverNbr(const unsigned int &i) {return fGeTAMU_Core_CloverNbr[i]; } - inline unsigned short GetCoreCrystalNbr(const unsigned int &i) {return fGeTAMU_Core_CrystalNbr[i]; } + inline unsigned int GetMultiplicityCoreE() {return fGeTAMU_Core_CloverNbr_E.size();} + inline unsigned short GetCoreCloverNbrE(const unsigned int &i) {return fGeTAMU_Core_CloverNbr_E[i]; } + inline unsigned short GetCoreCrystalNbrE(const unsigned int &i) {return fGeTAMU_Core_CrystalNbr_E[i]; } inline double GetCoreEnergy(const unsigned int &i) {return fGeTAMU_Core_Energy[i];} + + inline unsigned int GetMultiplicityCoreT() {return fGeTAMU_Core_CloverNbr_T.size();} + inline unsigned short GetCoreCloverNbrT(const unsigned int &i) {return fGeTAMU_Core_CloverNbr_T[i]; } + inline unsigned short GetCoreCrystalNbrT(const unsigned int &i) {return fGeTAMU_Core_CrystalNbr_T[i]; } inline double GetCoreTime(const unsigned int &i) {return fGeTAMU_Core_Time[i];} - inline unsigned int GetMultiplicityCore() {return fGeTAMU_Core_CloverNbr.size();} - inline unsigned short GetSegmentCloverNbr(const unsigned int &i) {return fGeTAMU_Segment_CloverNbr[i]; } - inline unsigned short GetSegmentSegmentNbr(const unsigned int &i) {return fGeTAMU_Segment_SegmentNbr[i]; } + inline unsigned int GetMultiplicitySegmentE() {return fGeTAMU_Segment_CloverNbr_E.size();} + inline unsigned short GetSegmentCloverNbrE(const unsigned int &i) {return fGeTAMU_Segment_CloverNbr_E[i]; } + inline unsigned short GetSegmentSegmentNbrE(const unsigned int &i) {return fGeTAMU_Segment_SegmentNbr_E[i]; } inline double GetSegmentEnergy(const unsigned int &i) {return fGeTAMU_Segment_Energy[i];} - inline double GetSegmentTime(const unsigned int &i) {return fGeTAMU_Segment_Time[i];} - inline unsigned int GetMultiplicitySegment() {return fGeTAMU_Segment_CloverNbr.size();} + inline unsigned int GetMultiplicitySegmentT() {return fGeTAMU_Segment_CloverNbr_T.size();} + inline unsigned short GetSegmentCloverNbrT(const unsigned int &i) {return fGeTAMU_Segment_CloverNbr_T[i]; } + inline unsigned short GetSegmentSegmentNbrT(const unsigned int &i) {return fGeTAMU_Segment_SegmentNbr_T[i]; } + inline double GetSegmentTime(const unsigned int &i) {return fGeTAMU_Segment_Time[i];} ClassDef(TGeTAMUData,1) // GeTAMUData structure }; diff --git a/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.cxx b/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.cxx index ee52f9f6c79092a7e48d3abf70ddd049fa4c241a..09cb38f8ad981046a0d645d2ea9f2e8c46981a56 100644 --- a/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.cxx +++ b/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.cxx @@ -9,10 +9,10 @@ * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * * * * Creation Date : November 2012 * - * Last update : * + * Last update : December 2016 m.moukaddam@surrey.ac.uk * *---------------------------------------------------------------------------* * Decription: * - * This class hold GeTAMU treated data * + * This class hold GeTAMU treated data * * * *---------------------------------------------------------------------------* * Comment: * @@ -51,31 +51,33 @@ ClassImp(TGeTAMUPhysics) ///////////////////////////////////////////////// void TGeTAMUPhysics::BuildPhysicalEvent(){ PreTreat(); - unsigned int c_size = m_PreTreatedData->GetMultiplicityCore(); - unsigned int s_size = m_PreTreatedData->GetMultiplicitySegment(); + unsigned int c_size_e = m_PreTreatedData->GetMultiplicityCoreE(); + unsigned int s_size_e = m_PreTreatedData->GetMultiplicitySegmentE(); + unsigned int c_size_t = m_PreTreatedData->GetMultiplicityCoreT(); + unsigned int s_size_t = m_PreTreatedData->GetMultiplicitySegmentT(); // map for add back map<int,double> clv_energy; map<int,int> clv_segment; map<int,int> clv_crystal; map<int,double> max_core; map<int,double> max_segment; - for(unsigned int i = 0 ; i < c_size ; i++){ - int clv = m_PreTreatedData->GetCoreCloverNbr(i); - int cry = m_PreTreatedData->GetCoreCrystalNbr(i); + for(unsigned int i = 0 ; i < c_size_e ; i++){ + int clv = m_PreTreatedData->GetCoreCloverNbrE(i); + int cry = m_PreTreatedData->GetCoreCrystalNbrE(i); double energy = m_PreTreatedData->GetCoreEnergy(i); // Add back energy clv_energy[clv] += energy; - // Pick up the crystal + // Pick up the crystal with the maximum energy in every clover if(energy > max_core[clv]){ max_core[clv] = energy; clv_crystal[clv] = cry; } - // Pick up the segment - for(unsigned int j = 0 ; j < s_size ; j++){ + // Pick up the segment with the maximum energy in every clover + for(unsigned int j = 0 ; j < s_size_e ; j++){ double s_energy = m_PreTreatedData->GetSegmentEnergy(j); if(s_energy > max_segment[clv]){ max_segment[clv] = s_energy; - clv_segment[clv] = m_PreTreatedData->GetSegmentSegmentNbr(j); + clv_segment[clv] = m_PreTreatedData->GetSegmentSegmentNbrE(j); } } } @@ -101,33 +103,53 @@ void TGeTAMUPhysics::BuildPhysicalEvent(){ void TGeTAMUPhysics::PreTreat(){ static CalibrationManager* cal = CalibrationManager::getInstance(); static string name; - unsigned int mysize = m_EventData->GetMultiplicityCore(); + unsigned int mysizeE = m_EventData->GetMultiplicityCoreE(); + unsigned int mysizeT = m_EventData->GetMultiplicityCoreT(); double Eraw,Energy; double Traw,Time; int clover, crystal, segment; - for(unsigned int i = 0 ; i < mysize ; i++){ + for(unsigned int i = 0 ; i < mysizeE ; i++){ Eraw = m_EventData->GetCoreEnergy(i); if(Eraw>0){ - clover = m_EventData->GetCoreCloverNbr(i); - crystal = m_EventData->GetCoreCrystalNbr(i); + clover = m_EventData->GetCoreCloverNbrE(i); + crystal = m_EventData->GetCoreCrystalNbrE(i); name = "GETAMU/D"+ NPL::itoa(clover)+"_CRY"+ NPL::itoa(crystal); Energy = cal->ApplyCalibration(name+"_E", Eraw); + m_PreTreatedData->SetCoreE(clover,crystal,Energy); + } + } + for(unsigned int i = 0 ; i < mysizeT ; i++){ + Traw = m_EventData->GetCoreTime(i); + if(Traw>0){ + clover = m_EventData->GetCoreCloverNbrT(i); + crystal = m_EventData->GetCoreCrystalNbrT(i); + name = "GETAMU/D"+ NPL::itoa(clover)+"_CRY"+ NPL::itoa(crystal); Time = cal->ApplyCalibration(name+"_T", Traw); - m_PreTreatedData->SetCore(clover,crystal,Energy,Time); + m_PreTreatedData->SetCoreT(clover,crystal,Time); } } - mysize = m_EventData->GetMultiplicitySegment(); - for(unsigned int i = 0 ; i < mysize ; i++){ + + mysizeE = m_EventData->GetMultiplicitySegmentE(); + for(unsigned int i = 0 ; i < mysizeE ; i++){ Eraw = m_EventData->GetSegmentEnergy(i); if(Eraw>0){ - clover = m_EventData->GetSegmentCloverNbr(i); - segment = m_EventData->GetSegmentSegmentNbr(i); + clover = m_EventData->GetSegmentCloverNbrE(i); + segment = m_EventData->GetSegmentSegmentNbrE(i); name = "GETAMU/D"+ NPL::itoa(clover)+"_SEG"+ NPL::itoa(segment); Energy = cal->ApplyCalibration(name+"_E", Eraw); + m_PreTreatedData->SetSegmentE(clover,crystal,Energy); + } + } + mysizeT = m_EventData->GetMultiplicitySegmentT(); + for(unsigned int i = 0 ; i < mysizeT ; i++){ + Traw = m_EventData->GetSegmentTime(i); + if(Traw>0){ + clover = m_EventData->GetSegmentCloverNbrT(i); + segment = m_EventData->GetSegmentSegmentNbrT(i); + name = "GETAMU/D"+ NPL::itoa(clover)+"_SEG"+ NPL::itoa(segment); Time = cal->ApplyCalibration(name+"_T", Traw); - m_PreTreatedData->SetSegment(clover,crystal,Energy,Time); + m_PreTreatedData->SetSegmentT(clover,crystal,Time); } - } } diff --git a/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.h b/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.h index 305cd39d5808c0abcae1a926e8616c3ca3bac156..fd4157ef41a0f4190bf2a6c866bdd2230c33e8e1 100644 --- a/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.h +++ b/NPLib/Detectors/GeTAMU/TGeTAMUPhysics.h @@ -11,7 +11,7 @@ * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * * Peter Bender contact address: bender@triumf.ca * * Creation Date : November 2012 * - * Last update : * + * Last update : December 2016 m.moukaddam@surrey.ac.uk * *---------------------------------------------------------------------------* * Decription: * * This class hold GeTAMU treated data *