diff --git a/NPLib/Detectors/Exogam/TExogamData.cxx b/NPLib/Detectors/Exogam/TExogamData.cxx index 514a5059f828a26b88b709b0123f45d379b8671b..53c426fd9ac37c0e247a9c1bd9b95a7fd209ff8a 100644 --- a/NPLib/Detectors/Exogam/TExogamData.cxx +++ b/NPLib/Detectors/Exogam/TExogamData.cxx @@ -24,70 +24,29 @@ using namespace std; #include "TExogamData.h" - ClassImp(TExogamData) -TExogamData::TExogamData() -{ - // Default constructor - Clear(); + TExogamData::TExogamData() { + // Default constructor + Clear(); } - - -TExogamData::~TExogamData() -{ +TExogamData::~TExogamData() {} + +void TExogamData::Clear() { + fExo_Flange.clear(); + fExo_Crystal.clear(); + fExo_E.clear(); + fExo_E_HG.clear(); // High gain x20 + fExo_TS.clear(); + fExo_TDC.clear(); + fExo_BGO.clear(); + fExo_CsI.clear(); + fExo_Outer1.clear(); + fExo_Outer2.clear(); + fExo_Outer3.clear(); + fExo_Outer4.clear(); } +void TExogamData::Dump() const {} - -void TExogamData::Clear() -{ - fExoE.clear(); - fExoE_CrystalNbr.clear(); - fExoE_TS.clear(); - fExoHG.clear(); - fExoHG_CrystalNbr.clear(); - fExoHG_TS.clear(); - fExoTDC.clear(); - fExoTDC_CrystalNbr.clear(); - fExoTDC_TS.clear(); - fExoOuter.clear(); - fExoOuter_SubCrystalNbr.clear(); - fExoBGO.clear(); - fExoBGO_CrystalNbr.clear(); - fExoCsI.clear(); - fExoCsI_CrystalNbr.clear(); -} - - - -void TExogamData::Dump() const -{ - cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl; - - cout << "Inner6MV Mult = " << fExoE.size() << endl; - for (UShort_t i = 0; i < fExoE.size(); i++) { - cout << "Energy: " << fExoE[i] << " Cristal Numb: " << fExoE_CrystalNbr[i] << " TimeStamp: " << fExoE_TS[i] << endl; - } - cout << "Inner20MV Mult = " << fExoHG.size() << endl; - for (UShort_t i = 0; i < fExoHG.size(); i++) { - cout << "Energy: " << fExoHG[i] << " Cristal Numb: " << fExoHG_CrystalNbr[i] << " TimeStamp: " << fExoHG_TS[i] << endl; - } - cout << "OutersV Mult = " << fExoOuter.size() << endl; - for (UShort_t i = 0; i < fExoOuter.size(); i++) { - cout << "Energy: " << fExoOuter[i] << " Cristal Numb: " << fExoOuter_SubCrystalNbr[i] << endl; - } - cout << "DeltaTV Mult = " << fExoTDC.size() << endl; - for (UShort_t i = 0; i < fExoTDC.size(); i++) { - cout << "Energy: " << fExoTDC[i] << " Cristal Numb: " << fExoTDC_CrystalNbr[i] << " TimeStamp: " << fExoTDC_TS[i] << endl; - } - cout << "BGOV Mult = " << fExoBGO.size() << endl; - for (UShort_t i = 0; i < fExoBGO.size(); i++) { - cout << "Energy: " << fExoBGO[i] << " Cristal Numb: " << fExoBGO_CrystalNbr[i] << endl; - } - cout << "CsIV Mult = " << fExoCsI.size() << endl; - for (UShort_t i = 0; i < fExoCsI.size(); i++) { - cout << "Energy: " << fExoCsI[i] << " Cristal Numb: " << fExoCsI_CrystalNbr[i] << endl; - } -} diff --git a/NPLib/Detectors/Exogam/TExogamData.h b/NPLib/Detectors/Exogam/TExogamData.h index 10e3ba2c513baa0002f69c3d41c44d682024f480..1887cdbcef955cbdcace3986210cd36be69e540b 100644 --- a/NPLib/Detectors/Exogam/TExogamData.h +++ b/NPLib/Detectors/Exogam/TExogamData.h @@ -24,30 +24,10 @@ // STL #include "TObject.h" +#include <map> #include <vector> class TExogamData : public TObject { - private: - std::vector<UShort_t> fExoE; - std::vector<UShort_t> fExoE_CrystalNbr; - std::vector<ULong64_t> fExoE_TS; - - std::vector<UShort_t> fExoHG; // Same as Energy but with High Gain (for Low Energy events) - std::vector<UShort_t> fExoHG_CrystalNbr; - std::vector<ULong64_t> fExoHG_TS; - - std::vector<UShort_t> fExoTDC; // Internal TDC of EXOGAM - std::vector<UShort_t> fExoTDC_CrystalNbr; - std::vector<ULong64_t> fExoTDC_TS; - - std::vector<UShort_t> fExoOuter; - std::vector<UShort_t> fExoOuter_SubCrystalNbr; - - std::vector<UShort_t> fExoBGO; - std::vector<UShort_t> fExoBGO_CrystalNbr; - - std::vector<UShort_t> fExoCsI; - std::vector<UShort_t> fExoCsI_CrystalNbr; public: TExogamData(); @@ -57,50 +37,48 @@ class TExogamData : public TObject { void Clear(const Option_t*){}; void Dump() const; + public: + std::vector<unsigned int> fExo_Flange; + std::vector<unsigned int> fExo_Crystal; + std::vector<unsigned int> fExo_E; + std::vector<unsigned int> fExo_E_HG; // High gain x20 + std::vector<unsigned long long> fExo_TS; + std::vector<unsigned int> fExo_TDC; + std::vector<unsigned int> fExo_BGO; + std::vector<unsigned int> fExo_CsI; + std::vector<unsigned int> fExo_Outer1; + std::vector<unsigned int> fExo_Outer2; + std::vector<unsigned int> fExo_Outer3; + std::vector<unsigned int> fExo_Outer4; + + ///////////////////// SETTERS //////////////////////// - inline void SetExo(const UShort_t& Energy, const UShort_t& DetNumb, const ULong64_t& TimeStamp) { - fExoE.push_back(Energy); - fExoE_CrystalNbr.push_back(DetNumb); - fExoE_TS.push_back(TimeStamp); - } - inline void SetExoHG(const UShort_t& Energy, const UShort_t& DetNumb, const ULong64_t& TimeStamp) { - fExoHG.push_back(Energy); - fExoHG_CrystalNbr.push_back(DetNumb); - fExoHG_TS.push_back(TimeStamp); - } - inline void SetExoDelta(const UShort_t& Time, const UShort_t& DetNumb, const ULong64_t& TimeStamp) { - fExoTDC.push_back(Time); - fExoTDC_CrystalNbr.push_back(DetNumb); - fExoTDC_TS.push_back(TimeStamp); - } - inline void SetExoOuter(const UShort_t& Energy, const UShort_t& OutersNumb) { - fExoOuter.push_back(Energy); - fExoOuter_SubCrystalNbr.push_back(OutersNumb); - } - inline void SetExoBGO(const UShort_t& Energy, const UShort_t& BGONumb) { - fExoBGO.push_back(Energy); - fExoBGO_CrystalNbr.push_back(BGONumb); - } - inline void SetExoCsI(const UShort_t& Energy, const UShort_t& CsINumb) { - fExoCsI.push_back(Energy); - fExoCsI_CrystalNbr.push_back(CsINumb); - } + inline void SetExoFlange(unsigned int& Flange) { fExo_Flange.push_back(Flange); } + inline void SetExoCrystal(unsigned int& Crystal) { fExo_Crystal.push_back(Crystal); } + inline void SetExoE(unsigned int& Energy) { fExo_E.push_back(Energy); } + inline void SetExoEHG(unsigned int& Energy) { fExo_E_HG.push_back(Energy); } + inline void SetExoTS(unsigned long long& TS) { fExo_TS.push_back(TS); } + inline void SetExoTDC(unsigned int& TDC) { fExo_TDC.push_back(TDC); } + inline void SetExoBGO(unsigned int& BGO) { fExo_BGO.push_back(BGO); } + inline void SetExoCsI(unsigned int& CsI) { fExo_CsI.push_back(CsI); } + inline void SetExoOuter1(unsigned int& Outer1) { fExo_Outer1.push_back(Outer1); } + inline void SetExoOuter2(unsigned int& Outer2) { fExo_Outer2.push_back(Outer2); } + inline void SetExoOuter3(unsigned int& Outer3) { fExo_Outer3.push_back(Outer3); } + inline void SetExoOuter4(unsigned int& Outer4) { fExo_Outer4.push_back(Outer4); } + ///////////////////// GETTERS //////////////////////// - inline UShort_t GetExoE(UShort_t& i) { return fExoE[i]; } - inline UShort_t GetExoE_CrystalNbr(UShort_t& i) { return fExoE_CrystalNbr[i]; } - inline ULong64_t GetExoE_TS(UShort_t& i) { return fExoE_TS[i]; } - inline UShort_t GetExoHG(UShort_t& i) { return fExoHG[i]; } - inline UShort_t GetExoHG_CrystalNbr(UShort_t& i) { return fExoHG_CrystalNbr[i]; } - inline ULong64_t GetExoHG_TS(UShort_t& i) { return fExoHG_TS[i]; } - inline UShort_t GetExoTDC(UShort_t& i) { return fExoTDC[i]; } - inline UShort_t GetExoTDC_CrystalNbr(UShort_t& i) { return fExoTDC_CrystalNbr[i]; } - inline ULong64_t GetExoTDC_TS(UShort_t& i) { return fExoTDC_TS[i]; } - inline UShort_t GetExoOuter(UShort_t& i) { return fExoOuter[i]; } - inline UShort_t GetExoOuter_SubCrystalNbr(UShort_t& i) { return fExoOuter_SubCrystalNbr[i]; } - inline UShort_t GetExoBGO(UShort_t& i) { return fExoBGO[i]; } - inline UShort_t GetExoBGO_CrystalNbr(UShort_t& i) { return fExoBGO_CrystalNbr[i]; } - inline UShort_t GetExoCsI(UShort_t& i) { return fExoCsI[i]; } - inline UShort_t GetExoCsI_CrystalNbr(UShort_t& i) { return fExoCsI_CrystalNbr[i]; } + inline unsigned int GetExoFlange(unsigned int& i) { return fExo_Flange[i]; } + inline unsigned int GetExoCrystal(unsigned int& i) { return fExo_Crystal[i]; } + inline unsigned int GetExoE(unsigned int& i) { return fExo_E[i]; } + inline unsigned int GetExoEHG(unsigned int& i) { return fExo_E_HG[i]; } + inline unsigned long long GetExoTS(unsigned int& i) { return fExo_TS[i]; } + inline unsigned int GetExoTDC(unsigned int& i) { return fExo_TDC[i]; } + inline unsigned int GetExoBGO(unsigned int& i) { return fExo_BGO[i]; } + inline unsigned int GetExoCsI(unsigned int& i) { return fExo_CsI[i]; } + inline unsigned int GetExoOuter1(unsigned int& i) { return fExo_Outer1[i]; } + inline unsigned int GetExoOuter2(unsigned int& i) { return fExo_Outer2[i]; } + inline unsigned int GetExoOuter3(unsigned int& i) { return fExo_Outer3[i]; } + inline unsigned int GetExoOuter4(unsigned int& i) { return fExo_Outer4[i]; } ClassDef(TExogamData, 1) // ExogamData structure }; diff --git a/NPLib/Detectors/Exogam/TExogamPhysics.cxx b/NPLib/Detectors/Exogam/TExogamPhysics.cxx index c9d907539d557cc63d4b3cb14cc47ebfffe18ced..68b02ad7c7c486afea3100faebf76178ac60e618 100644 --- a/NPLib/Detectors/Exogam/TExogamPhysics.cxx +++ b/NPLib/Detectors/Exogam/TExogamPhysics.cxx @@ -450,18 +450,23 @@ void TExogamPhysics::Clear() { // Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token void TExogamPhysics::ReadConfiguration(NPL::InputParser parser) { - vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Exogam"); + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("EXOGAM"); if (NPOptionManager::getInstance()->GetVerboseLevel()) - cout << "//// " << blocks.size() << " detectors found " << endl; + cout << "//// " << blocks.size() << " EXOGAM clover found " << endl; - vector<string> token = {"ANGLE_FILE"}; + // FIXME ANGLE FILE??? NOT SURE I GET IT... + // For Doppler I guess... Something like that should be added later + // But maybe the more stand R,THETA,PHI or X,Y,Z + // vector<string> token = {"ANGLE_FILE"}; + vector<string> token = {"Board, Flange, Channel0, Channel1"}; + // FIXME To be implemented in the future + // vector<string> token = {"Board, Flange, Channel0, Channel1, R, THETA, PHI"}; for (unsigned int i = 0; i < blocks.size(); i++) { if (blocks[i]->HasTokenList(token)) { - string AngleFile = blocks[i]->GetString("ANGLE_FILE"); - AddClover(AngleFile); + int Board, Flange, Channel0, Channel1; // FIXME!!!! Should come from Data... + AddClover(Board, Flange, Channel0, Channel1); } - else { cout << "ERROR: check your input file formatting " << endl; exit(1); @@ -493,58 +498,66 @@ map<string, TH1*> TExogamPhysics::GetSpectra() { return empty; } } + + ////////////////////////////////////////////////////////////////////////// -void TExogamPhysics::AddClover(string AngleFile) { - ifstream file; - // TString filename = Form("posBaptiste/angles_exogam_clover%d.txt",NumberOfClover); - // TString filename = Form("posz42_simu50mm/angles_exogam_clover%d.txt",NumberOfClover); - // TString filename = Form("posz42_exp_stat_demiring/angles_exogam_clover%d.txt",NumberOfClover); +void TExogamPhysics::AddClover(int Board, int Flange, int Channel0, int Channel1) { - string path = "configs/"; - TString filename = path + AngleFile; +} - cout << filename << endl; - file.open(filename); - if (!file) - cout << filename << " was not opened" << endl; +// FIXME Legacy thing... Might delete later +////////////////////////////////////////////////////////////////////////// +// void TExogamPhysics::AddClover(string AngleFile) { +// ifstream file; +// // TString filename = Form("posBaptiste/angles_exogam_clover%d.txt",NumberOfClover); +// // TString filename = Form("posz42_simu50mm/angles_exogam_clover%d.txt",NumberOfClover); +// // TString filename = Form("posz42_exp_stat_demiring/angles_exogam_clover%d.txt",NumberOfClover); - vector<double> Angles; - vector<vector<double>> Segment_angles; - vector<vector<vector<double>>> Cristal_angles; +// string path = "configs/"; +// TString filename = path + AngleFile; - Cristal_angles.clear(); +// cout << filename << endl; +// file.open(filename); +// if (!file) +// cout << filename << " was not opened" << endl; - double angle; - string buffer; +// vector<double> Angles; +// vector<vector<double>> Segment_angles; +// vector<vector<vector<double>>> Cristal_angles; - for (int i = 0; i < 4; i++) { - Segment_angles.clear(); +// Cristal_angles.clear(); - for (int j = 0; j < 4; j++) { - Angles.clear(); +// double angle; +// string buffer; - for (int k = 0; k < 2; k++) { - file >> buffer >> angle; +// for (int i = 0; i < 4; i++) { +// Segment_angles.clear(); - Angles.push_back(angle); // Theta (k = 0) Phi (k = 1) +// for (int j = 0; j < 4; j++) { +// Angles.clear(); - // cout << angle << endl; - if (Angles.size() == 2) - cout << "Clover " << NumberOfClover << ": Theta=" << Angles[0] << " Phi=" << Angles[1] << endl; - } +// for (int k = 0; k < 2; k++) { +// file >> buffer >> angle; - Segment_angles.push_back(Angles); - } +// Angles.push_back(angle); // Theta (k = 0) Phi (k = 1) - Cristal_angles.push_back(Segment_angles); - } +// // cout << angle << endl; +// if (Angles.size() == 2) +// cout << "Clover " << NumberOfClover << ": Theta=" << Angles[0] << " Phi=" << Angles[1] << endl; +// } - Clover_Angles_Theta_Phi.push_back(Cristal_angles); +// Segment_angles.push_back(Angles); +// } - file.close(); +// Cristal_angles.push_back(Segment_angles); +// } - NumberOfClover++; -} +// Clover_Angles_Theta_Phi.push_back(Cristal_angles); + +// file.close(); + +// NumberOfClover++; +// } // Add Parameter to the CalibrationManger void TExogamPhysics::AddParameterToCalibrationManager() { diff --git a/NPLib/Detectors/Exogam/TExogamPhysics.h b/NPLib/Detectors/Exogam/TExogamPhysics.h index ede6c9fa53adf3b2c764d3c3ad78f263d7db5768..2f528b5fd67ebf30331ebdae9163e6a4734365a4 100644 --- a/NPLib/Detectors/Exogam/TExogamPhysics.h +++ b/NPLib/Detectors/Exogam/TExogamPhysics.h @@ -154,7 +154,8 @@ class TExogamPhysics : public TObject, public NPL::VDetector{ public: // Specific to EXOGAM Array // Add a Clover - void AddClover(string AngleFile); + // void AddClover(string AngleFile); + void AddClover(int Board, int Flange, int Channel0, int Channel1); Int_t GetClover_Mult() { return(CloverNumber.size()); } // Int_t GetECC_Mult() { return(ECC_CristalNumber.size()); } @@ -196,4 +197,4 @@ namespace EXOGAM_LOCAL } -#endif \ No newline at end of file +#endif