#ifndef TICPHYSICS_H #define TICPHYSICS_H /***************************************************************************** * Copyright (C) 2009-2020 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: P. Morfouace contact address: pierre.morfouace@cea.fr * * * * Creation Date : October 2023 * * Last update : * *---------------------------------------------------------------------------* * Decription: * * This class hold IC Treated data * * * *---------------------------------------------------------------------------* * Comment: * * * * * *****************************************************************************/ // C++ headers #include <vector> #include <map> #include <set> #include <string> using namespace std; // ROOT headers #include "TObject.h" #include "TH1.h" #include "TVector3.h" #include "TSpline.h" // NPTool headers #include "TICData.h" #include "NPCalibrationManager.h" #include "NPVDetector.h" #include "NPInputParser.h" class TICPhysics : public TObject, public NPL::VDetector { ////////////////////////////////////////////////////////////// // constructor and destructor public: TICPhysics(); ~TICPhysics() {}; ////////////////////////////////////////////////////////////// // Inherited from TObject and overriden to avoid warnings public: void Clear(); void Clear(const Option_t*) {}; ////////////////////////////////////////////////////////////// // data obtained after BuildPhysicalEvent() and stored in // output ROOT file public: double DE; double Eres; double Etot; double Chio_Z; double fIC[11]; double fIC_raw[11];//! private: /// A usefull method to bundle all operation to add a detector void AddDetector(TVector3 Pos); void AddDetector(double R, double Theta, double Phi); ////////////////////////////////////////////////////////////// // methods inherited from the VDetector ABC class public: // read stream from ConfigFile to pick-up detector parameters void ReadConfiguration(NPL::InputParser); // add parameters to the CalibrationManger void AddParameterToCalibrationManager(); // method called event by event, aiming at extracting the // physical information from detector void BuildPhysicalEvent(); // same as BuildPhysicalEvent() method but with a simpler // treatment void BuildSimplePhysicalEvent(); // same as above but for online analysis void BuildOnlinePhysicalEvent() {BuildPhysicalEvent();}; // activate raw data object and branches from input TChain // in this method mother branches (Detector) AND daughter leaves // (fDetector_parameter) have to be activated void InitializeRootInputRaw(); // activate physics data object and branches from input TChain // in this method mother branches (Detector) AND daughter leaves // (fDetector_parameter) have to be activated void InitializeRootInputPhysics(); // create branches of output ROOT file void InitializeRootOutput(); // clear the raw and physical data objects event by event void ClearEventPhysics() {Clear();} void ClearEventData() {m_EventData->Clear();} ////////////////////////////////////////////////////////////// // specific methods to IC array public: // remove bad channels, calibrate the data and apply thresholds void PreTreat(); // clear the pre-treated object void ClearPreTreatedData() {m_PreTreatedData->Clear();} // read the user configuration file. If no file is found, load standard one void ReadAnalysisConfig(); // give and external TICData object to TICPhysics. // needed for online analysis for example void SetRawDataPointer(TICData* rawDataPointer) {m_EventData = rawDataPointer;} void SetFPMWSection(int section) {m_FPMW_Section = section;} int GetFPMWSection() {return m_FPMW_Section;} void LoadZSpline(); // objects are not written in the TTree private: TICData* m_EventData; //! TICData* m_PreTreatedData; //! TICPhysics* m_EventPhysics; //! // getters for raw and pre-treated data object public: TICData* GetRawData() const {return m_EventData;} TICData* GetPreTreatedData() const {return m_PreTreatedData;} // parameters used in the analysis private: double m_E_Threshold; //! // number of detectors private: int m_NumberOfDetectors; //! int m_FPMW_Section; //! string m_Z_SPLINE_PATH; //! bool m_Z_SPLINE_CORRECTION; //! TSpline3* m_Zspline; //! // Static constructor to be passed to the Detector Factory public: static NPL::VDetector* Construct(); ClassDef(TICPhysics,1) // ICPhysics structure }; #endif