From 8bf2288004e2d8ed255f92628e8f02ae052b40d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?GIRARD=20ALCINDOR=20Val=C3=A9rian?=
 <girard-alcindor@ijclab.in2p3.fr>
Date: Mon, 4 Dec 2023 11:37:48 +0100
Subject: [PATCH] Update to MUST2

---
 NPLib/Core/NPCalibrationManager.cxx     | 337 ++++++++++++------------
 NPLib/Detectors/MUST2/TMust2Physics.cxx |  18 +-
 Projects/e870/.ninja_deps               | Bin 150652 -> 0 bytes
 Projects/e870/.ninja_log                |   7 -
 Projects/e870/Analysis.cxx              |   1 -
 Projects/e870/libNPAnalysis.dylib       | Bin 93136 -> 0 bytes
 6 files changed, 176 insertions(+), 187 deletions(-)
 delete mode 100644 Projects/e870/.ninja_deps
 delete mode 100644 Projects/e870/.ninja_log
 delete mode 100755 Projects/e870/libNPAnalysis.dylib

diff --git a/NPLib/Core/NPCalibrationManager.cxx b/NPLib/Core/NPCalibrationManager.cxx
index 4666f877f..efd9386d3 100644
--- a/NPLib/Core/NPCalibrationManager.cxx
+++ b/NPLib/Core/NPCalibrationManager.cxx
@@ -20,15 +20,15 @@
  *                                                                           *
  *****************************************************************************/
 #include "NPCalibrationManager.h"
+#include "NPCore.h"
 #include "NPOptionManager.h"
-#include "TAsciiFile.h"
 #include "RootOutput.h"
-#include "NPCore.h"
+#include "TAsciiFile.h"
 #include "TRandom.h"
 //   STL
+#include <cmath>
 #include <cstdlib>
 #include <limits>
-#include <cmath>
 #include <sstream>
 //   ROOT
 #include <TSystem.h>
@@ -36,7 +36,7 @@
 //////////////////////////////////////////////////////////////////
 CalibrationManager* CalibrationManager::instance = 0;
 
-CalibrationManager* CalibrationManager::getInstance(const std::string& configFileName){
+CalibrationManager* CalibrationManager::getInstance(const std::string& configFileName) {
   // A new instance of CalibrationManager is created if it does not exist:
   if (instance == 0) {
     instance = new CalibrationManager(configFileName);
@@ -47,7 +47,7 @@ CalibrationManager* CalibrationManager::getInstance(const std::string& configFil
 }
 
 //////////////////////////////////////////////////////////////////
-CalibrationManager::CalibrationManager(std::string configFileName){
+CalibrationManager::CalibrationManager(std::string configFileName) {
   // Read configuration file Buffer
   std::string lineBuffer, dataBuffer;
 
@@ -55,35 +55,35 @@ CalibrationManager::CalibrationManager(std::string configFileName){
   std::ifstream inputConfigFile;
   inputConfigFile.open(gSystem->ExpandPathName(configFileName.c_str()));
 
-  if(!NPOptionManager::getInstance()->IsDefault("Calibration")){
+  if (!NPOptionManager::getInstance()->IsDefault("Calibration")) {
     std::cout << std::endl;
     std::cout << "/////////// Calibration Information ///////////" << std::endl;
     std::cout << "Getting list of calibration files" << std::endl;
   }
- 
+
   if (!inputConfigFile) {
-      if(!NPOptionManager::getInstance()->IsDefault("Calibration"))
-        std::cout << "Calibration Path file: " << configFileName << " not found" << std::endl; 
+    if (!NPOptionManager::getInstance()->IsDefault("Calibration"))
+      std::cout << "Calibration Path file: " << configFileName << " not found" << std::endl;
     return;
   }
 
-  else { 
-    std::cout << "Reading list of files from: " << configFileName << std::endl; 
+  else {
+    std::cout << "Reading list of files from: " << configFileName << std::endl;
     while (!inputConfigFile.eof()) {
       getline(inputConfigFile, lineBuffer);
 
       // search for token giving the list of Root files to treat
-      if ( lineBuffer.compare(0, 19, "CalibrationFilePath") == 0 ) {
+      if (lineBuffer.compare(0, 19, "CalibrationFilePath") == 0) {
         while (!inputConfigFile.eof()) {
           inputConfigFile >> dataBuffer;
 
-          // ignore comment Line 
+          // ignore comment Line
           if (dataBuffer.compare(0, 1, "%") == 0) {
             inputConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
           }
 
           else if (!inputConfigFile.eof()) {
-						dataBuffer = gSystem->ExpandPathName(dataBuffer.c_str());
+            dataBuffer = gSystem->ExpandPathName(dataBuffer.c_str());
             AddFile(dataBuffer);
             std::cout << "Adding file " << dataBuffer << " to Calibration" << std::endl;
           }
@@ -95,325 +95,320 @@ CalibrationManager::CalibrationManager(std::string configFileName){
 }
 
 //////////////////////////////////////////////////////////////////
-CalibrationManager::~CalibrationManager()
-{}
+CalibrationManager::~CalibrationManager() {}
 
 //////////////////////////////////////////////////////////////////
-bool CalibrationManager::AddParameter(std::string DetectorName , std::string ParameterName , std::string Token, std::vector<double> def ){
-  std::string ParameterPath = DetectorName + "/" + ParameterName ;
-  fToken[Token] = ParameterPath ;
+bool CalibrationManager::AddParameter(std::string DetectorName, std::string ParameterName, std::string Token,
+                                      std::vector<double> def) {
+  std::string ParameterPath = DetectorName + "/" + ParameterName;
+  fToken[Token] = ParameterPath;
+  // std::cout << ParameterPath << std::endl;
   // Case where a default value is given
-  if(def.size()!=0)
+  if (def.size() != 0)
     fCalibrationCoeff[ParameterPath] = def;
   return true;
 }
 //////////////////////////////////////////////////////////////////
-bool CalibrationManager::AddParameter(std::string Token, std::vector<double> def ){
+bool CalibrationManager::AddParameter(std::string Token, std::vector<double> def) {
   fToken[Token] = Token;
   // Case where a default value is given
-  if(def.size()!=0)
+  if (def.size() != 0)
     fCalibrationCoeff[Token] = def;
   return true;
 }
 
-
 /////////////////////////////////////////////////////////////////
-void CalibrationManager::ClearCalibration(){
-  fCalibrationCoeff.clear();
-}
+void CalibrationManager::ClearCalibration() { fCalibrationCoeff.clear(); }
 
 /////////////////////////////////////////////////////////////////
 std::vector<double> CalibrationManager::GetCorrection(const std::string& ParameterPath) const {
-  std::vector<double> Coeff ;
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  it = fCalibrationCoeff.find(ParameterPath)  ;
+  std::vector<double> Coeff;
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  it = fCalibrationCoeff.find(ParameterPath);
 
-  if(it == fCalibrationCoeff.end() )
-  {
-    /* std::cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << std::endl ;
-       std::cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << std::endl ;
-       std::cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << std::endl ;*/
+  if (it == fCalibrationCoeff.end()) {
+    /* std::cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << std::endl
+       ; std::cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " <<
+       std::endl ; std::cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "
+       << std::endl ;*/
 
-    return Coeff ;
+    return Coeff;
   }
 
-  Coeff = it->second  ;
+  Coeff = it->second;
 
-  return(Coeff);
+  return (Coeff);
 }
 
-
 //////////////////////////////////////////////////////////////////
-void CalibrationManager::LoadParameterFromFile(){
-  std::ifstream  CalibFile;
-  std::string    DataBuffer;
-  std::string    LineBuffer;
+void CalibrationManager::LoadParameterFromFile() {
+  std::ifstream CalibFile;
+  std::string DataBuffer;
+  std::string LineBuffer;
 
   // Get pointer to the TAsciifile CalibrationFile in RootOuput
   TAsciiFile* AcsiiCalibration = RootOutput::getInstance()->GetAsciiFileCalibration();
 
-
   unsigned int sizeF = fFileList.size();
-  if(sizeF){// If calibration parameter are given, suppress all default calibration
+  if (sizeF) { // If calibration parameter are given, suppress all default calibration
     fCalibrationCoeff.clear();
   }
 
-  for(unsigned int i = 0 ; i < sizeF ; i++){
-    CalibFile.open( fFileList[i].c_str() );
-    std::map<std::string,std::string>::iterator it ;
+  for (unsigned int i = 0; i < sizeF; i++) {
+    CalibFile.open(fFileList[i].c_str());
+    std::map<std::string, std::string>::iterator it;
 
-    if(!CalibFile){
+    if (!CalibFile) {
       std::ostringstream message;
-      message << "file " << fFileList[i] << " is missing " ;
-      NPL::SendWarning ("NPL::CalibrationManager" , message.str());
+      message << "file " << fFileList[i] << " is missing ";
+      NPL::SendWarning("NPL::CalibrationManager", message.str());
     }
-    
+
     else {
       // Append the Calibration File to the RootOuput for Back-up
       std::string comment = "%%% From File " + fFileList[i] + "%%%";
       AcsiiCalibration->AppendLine(comment.c_str());
       AcsiiCalibration->Append(fFileList[i].c_str());
 
-      while( !CalibFile.eof() ){
+      while (!CalibFile.eof()) {
         // Read the file Line by line
         getline(CalibFile, LineBuffer);
 
         // Create a istd::stringstream to manipulate the line easely
-        std::istringstream theLine (LineBuffer,std::istringstream::in);
-        theLine >> DataBuffer ;
+        std::istringstream theLine(LineBuffer, std::istringstream::in);
+        theLine >> DataBuffer;
 
         // Comment support, comment symbole is %
-        if(DataBuffer.compare(0, 1, "%") == 0) {
-          CalibFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+        if (DataBuffer.compare(0, 1, "%") == 0) {
+          CalibFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
+        }
 
         //   Search word in the token list
-        it=fToken.find(DataBuffer);
+        it = fToken.find(DataBuffer);
         //   if the word is find, values are read
-        if( it!=fToken.end() ){ 
-          std::vector<double> Coeff ;
-          while( theLine >> DataBuffer ){
-            Coeff.push_back( atof(DataBuffer.c_str()) ) ;
+        if (it != fToken.end()) {
+          std::vector<double> Coeff;
+          while (theLine >> DataBuffer) {
+            Coeff.push_back(atof(DataBuffer.c_str()));
           }
 
           //   Check this parameter is not already define
-          if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) 
+          if (fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end())
             std::cout << "WARNING: Parameter " << it->second << " Already found. It will be overwritten. " << std::endl;
 
           //   Add the list of Coeff to the Coeff std::map using Parameter Path as index
-          fCalibrationCoeff[ it->second ] = Coeff ;
+          fCalibrationCoeff[it->second] = Coeff;
         }
       }
     }
-    CalibFile.close() ;
+    CalibFile.close();
   }
 }
 
 //////////////////////////////////////////////////////////////////
-double CalibrationManager::ApplyCalibration(const std::string& ParameterPath , const double& RawValue, double random) const {
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
+double CalibrationManager::ApplyCalibration(const std::string& ParameterPath, const double& RawValue,
+                                            double random) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
 
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
+  it = fCalibrationCoeff.find(ParameterPath);
   // If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
-    return RawValue ;
+  if (it == ite) {
+    return RawValue;
   }
 
-  double val ;
-  if(random){
-    val=RawValue + gRandom->Uniform(random);
-    }
+  double val;
+  if (random) {
+    val = RawValue + gRandom->Uniform(random);
+  }
   else
-    val=RawValue;
+    val = RawValue;
 
   // The std::vector size give the degree of calibration
   // We just apply the coeff it->second and returned the calibrated value
-  double CalibratedValue = 0 ;
-  unsigned int mysize = it->second.size(); 
-  for(unsigned int i = 0 ; i < mysize ; i++){
-    CalibratedValue += it->second[i]*pow(val, (double)i);
+  double CalibratedValue = 0;
+  unsigned int mysize = it->second.size();
+  for (unsigned int i = 0; i < mysize; i++) {
+    CalibratedValue += it->second[i] * pow(val, (double)i);
   }
 
-  return CalibratedValue ;
-
+  return CalibratedValue;
 }
 //////////////////////////////////////////////////////////////////
-double CalibrationManager::ApplyCalibrationDebug(const std::string& ParameterPath , const double& RawValue, double random) const{
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
+double CalibrationManager::ApplyCalibrationDebug(const std::string& ParameterPath, const double& RawValue,
+                                                 double random) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
 
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
+  it = fCalibrationCoeff.find(ParameterPath);
+
+  // for (auto it2 = fCalibrationCoeff.begin(); it2 != fCalibrationCoeff.end(); it2++) {
+  //   std::cout << it2.first << std::endl;
+  // }
 
   // If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
-           std::cout << " PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << std::endl ;
-    return RawValue ;
+  if (it == ite) {
+    std::cout << " PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << std::endl;
+    return RawValue;
   }
 
-  double val ;
-  if(random){
-    val=RawValue + gRandom->Uniform(random);
-    }
+  double val;
+  if (random) {
+    val = RawValue + gRandom->Uniform(random);
+  }
   else
-    val=RawValue;
-
+    val = RawValue;
 
   // Else we take the second part of the element (first is index, ie: parameter path)
   // Second is the std::vector of Coeff
-  std::cout << it->first << " :  raw = " << RawValue << "  randomize = " << val <<  "  coeff = "  ;
-  std::vector<double> Coeff = it->second  ;
+  std::cout << it->first << " :  raw = " << RawValue << "  randomize = " << val << "  coeff = ";
+  std::vector<double> Coeff = it->second;
 
   // The std::vector size give the degree of calibration
   // We just apply the coeff and returned the calibrated value
 
-  double CalibratedValue = 0 ;
-  for(unsigned int i = 0 ; i < Coeff.size() ; i++){
-    std::cout << Coeff[i] << " " ;
-    CalibratedValue += Coeff[i]*pow(RawValue, (double)i);
+  double CalibratedValue = 0;
+  for (unsigned int i = 0; i < Coeff.size(); i++) {
+    std::cout << Coeff[i] << " ";
+    CalibratedValue += Coeff[i] * pow(RawValue, (double)i);
   }
-  std::cout << "results = " << CalibratedValue << std::endl ;
-  return CalibratedValue ;
+  std::cout << "results = " << CalibratedValue << std::endl;
+  return CalibratedValue;
 }
 ////////////////////////////////////////////////////////////////////////////////
-double CalibrationManager::ApplyResistivePositionCalibration(const std::string& ParameterPath , const double& DeltaRawValue) const{
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
+double CalibrationManager::ApplyResistivePositionCalibration(const std::string& ParameterPath,
+                                                             const double& DeltaRawValue) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
 
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
+  it = fCalibrationCoeff.find(ParameterPath);
 
   // If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
-    return DeltaRawValue ;
+  if (it == ite) {
+    return DeltaRawValue;
   }
 
   // Check that the number of coeff is ok
-  if(it->second.size()!=2) 
-    return DeltaRawValue ; 
+  if (it->second.size() != 2)
+    return DeltaRawValue;
 
-  double CalibratedValue = (DeltaRawValue-it->second[0])/(it->second[1]);
+  double CalibratedValue = (DeltaRawValue - it->second[0]) / (it->second[1]);
 
-  return CalibratedValue ;
+  return CalibratedValue;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-double CalibrationManager::ApplyResistivePositionCalibrationDebug(const std::string& ParameterPath , const double& DeltaRawValue) const {
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
+double CalibrationManager::ApplyResistivePositionCalibrationDebug(const std::string& ParameterPath,
+                                                                  const double& DeltaRawValue) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
 
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
-	
+  it = fCalibrationCoeff.find(ParameterPath);
+
   // If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
-      std::cout << " PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << std::endl ;
-    return DeltaRawValue ;
+  if (it == ite) {
+    std::cout << " PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << std::endl;
+    return DeltaRawValue;
   }
 
-	std::vector<double> Coeff = it->second  ;
-	
+  std::vector<double> Coeff = it->second;
+
   // Check that the number of coeff is ok
-  if(Coeff.size()!=2){
-      std::cout << " NUMBER OF COEFF " << Coeff.size() << " IS DIFFERENT THAN TWO " << std::endl ;
-    return DeltaRawValue ; 
+  if (Coeff.size() != 2) {
+    std::cout << " NUMBER OF COEFF " << Coeff.size() << " IS DIFFERENT THAN TWO " << std::endl;
+    return DeltaRawValue;
   }
 
-  double CalibratedValue = (DeltaRawValue-Coeff[0])/(Coeff[1]);
-  std::cout << it->first << " :  raw = " << DeltaRawValue << " coeff = "  ;
-  std::cout << Coeff[0] << " " << Coeff[1] << std::endl ;
-  std::cout << "results = " << CalibratedValue << std::endl ;
+  double CalibratedValue = (DeltaRawValue - Coeff[0]) / (Coeff[1]);
+  std::cout << it->first << " :  raw = " << DeltaRawValue << " coeff = ";
+  std::cout << Coeff[0] << " " << Coeff[1] << std::endl;
+  std::cout << "results = " << CalibratedValue << std::endl;
 
-  return CalibratedValue ;
+  return CalibratedValue;
 }
 
 //////////////////////////////////////////////////////////////////
-bool CalibrationManager::ApplyThreshold(const std::string& ParameterPath, const double& RawValue) const{
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
-  
+bool CalibrationManager::ApplyThreshold(const std::string& ParameterPath, const double& RawValue) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
+
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
+  it = fCalibrationCoeff.find(ParameterPath);
 
   // If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
+  if (it == ite) {
     return false;
   }
 
   // The std::vector size give the degree of calibration
   // We just apply the coeff and returned the calibrated value
 
-  double ThresholdValue ;
+  double ThresholdValue;
 
-  if(it->second.size()==2){ // CATS style
-    ThresholdValue = it->second[0] + 3*it->second[1];
+  if (it->second.size() == 2) { // CATS style
+    ThresholdValue = it->second[0] + 3 * it->second[1];
   }
-  else{ // Standard Threshold
+  else { // Standard Threshold
     ThresholdValue = it->second[0];
   }
 
-
-  if(RawValue > ThresholdValue)
+  if (RawValue > ThresholdValue)
     return true;
-  else 
+  else
     return false;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
-double CalibrationManager::ApplySigmoid(const std::string& ParameterPath, const double& RawValue) const{
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
+double CalibrationManager::ApplySigmoid(const std::string& ParameterPath, const double& RawValue) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
-	// If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
-    return RawValue ;
+  it = fCalibrationCoeff.find(ParameterPath);
+  // If the find methods return the end iterator it's mean the parameter was not found
+  if (it == ite) {
+    return RawValue;
   }
 
-  std::vector<double> Coeff = it->second  ;
+  std::vector<double> Coeff = it->second;
   // Check that the number of coeff is ok
-  if(Coeff.size()!=3){
-    return RawValue ; 
+  if (Coeff.size() != 3) {
+    return RawValue;
   }
 
-  return (Coeff[0]/(exp(Coeff[1]*(Coeff[2]-(RawValue+gRandom->Uniform(1))))+1));
-
- 
-  }
-/////////////////////////////////////////////////////////////////////////////////////////////
-double CalibrationManager::GetPedestal(const std::string& ParameterPath) const{
-  return GetValue(ParameterPath,0);
+  return (Coeff[0] / (exp(Coeff[1] * (Coeff[2] - (RawValue + gRandom->Uniform(1)))) + 1));
 }
+/////////////////////////////////////////////////////////////////////////////////////////////
+double CalibrationManager::GetPedestal(const std::string& ParameterPath) const { return GetValue(ParameterPath, 0); }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
-double CalibrationManager::GetValue(const std::string& ParameterPath,const unsigned int& order) const{
-  std::map< std::string , std::vector<double> >::const_iterator it ;
-  static std::map< std::string , std::vector<double> >::const_iterator ite = fCalibrationCoeff.end();
+double CalibrationManager::GetValue(const std::string& ParameterPath, const unsigned int& order) const {
+  std::map<std::string, std::vector<double>>::const_iterator it;
+  static std::map<std::string, std::vector<double>>::const_iterator ite = fCalibrationCoeff.end();
 
   //   Find the good parameter in the Map
   // Using Find method of stl is the fastest way
-  it = fCalibrationCoeff.find(ParameterPath)  ;
+  it = fCalibrationCoeff.find(ParameterPath);
 
   // If the find methods return the end iterator it's mean the parameter was not found
-  if(it == ite ){
+  if (it == ite) {
     return 0;
   }
 
   // The std::vector size give the degree of calibration
-  double Value = 0 ;
-  if(it->second.size()>order){
-     Value = it->second[order];
+  double Value = 0;
+  if (it->second.size() > order) {
+    Value = it->second[order];
   }
 
   return Value;
 }
-
-
-
diff --git a/NPLib/Detectors/MUST2/TMust2Physics.cxx b/NPLib/Detectors/MUST2/TMust2Physics.cxx
index 13f9bb4cf..0239c2503 100644
--- a/NPLib/Detectors/MUST2/TMust2Physics.cxx
+++ b/NPLib/Detectors/MUST2/TMust2Physics.cxx
@@ -62,7 +62,8 @@ ClassImp(TMust2Physics)
   m_Si_X_E_RAW_Threshold = 8192;
   m_Si_Y_E_RAW_Threshold = 8192;
   m_SiLi_E_RAW_Threshold = 8192;
-  m_CsI_E_RAW_Threshold = 8192;
+  // m_CsI_E_RAW_Threshold = 8192;
+  m_CsI_E_RAW_Threshold = 0;
   // Calibrated Threshold
   m_Si_X_E_Threshold = 0;
   m_Si_Y_E_Threshold = 0;
@@ -527,11 +528,11 @@ void TMust2Physics::PreTreat() {
   for (unsigned int i = 0; i < m_CsIEMult; ++i) {
     if (m_EventData->GetMMCsIEEnergy(i) > m_CsI_E_RAW_Threshold &&
         IsValidChannel(3, m_EventData->GetMMCsIEDetectorNbr(i), m_EventData->GetMMCsIECristalNbr(i))) {
-      // double ECsI = fCsI_E(m_EventData, i);
-      double ECsI = m_EventData->GetMMCsIEEnergy(i);
-      if (ECsI > 8192) {
-        m_PreTreatedData->SetCsIE(m_EventData->GetMMCsIEDetectorNbr(i), m_EventData->GetMMCsIECristalNbr(i), ECsI);
-      }
+      double ECsI = fCsI_E(m_EventData, i);
+      // double ECsI = m_EventData->GetMMCsIEEnergy(i);
+      // if (ECsI > 8192) {
+      // m_PreTreatedData->SetCsIE(m_EventData->GetMMCsIEDetectorNbr(i), m_EventData->GetMMCsIECristalNbr(i), ECsI);
+      // }
     }
   }
 
@@ -1229,10 +1230,10 @@ void TMust2Physics::AddParameterToCalibrationManager() {
   for (int i = 0; i < m_NumberOfTelescope; ++i) {
 
     if (m_CsIOffset[i] == 1) {
-      vector<double> standardCsI = {0, 500. / 16384.};
+      standardCsI = {0, 500. / 16384.};
     }
     else
-      vector<double> standardCsI = {-250, 250. / 8192.};
+      standardCsI = {-250, 250. / 8192.};
 
     for (int j = 0; j < 128; ++j) {
       Cal->AddParameter("MUST2", "T" + NPL::itoa(i + 1) + "_Si_X" + NPL::itoa(j + 1) + "_E",
@@ -2487,6 +2488,7 @@ namespace MUST2_LOCAL {
     name += "_Si_X";
     name += NPL::itoa(m_EventData->GetMMStripXEStripNbr(i));
     name += "_E";
+    std::cout << name << std::endl;
     return CalibrationManager::getInstance()->ApplyCalibration(name, m_EventData->GetMMStripXEEnergy(i));
   }
 
diff --git a/Projects/e870/.ninja_deps b/Projects/e870/.ninja_deps
deleted file mode 100644
index e5242e333298b947ce0ae1064f6ded67f029ff39..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 150652
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
ZfBOe>bN@i@7sx#XxpxrlBUHP8@PA#tzOw)T

diff --git a/Projects/e870/.ninja_log b/Projects/e870/.ninja_log
deleted file mode 100644
index 04af91053..000000000
--- a/Projects/e870/.ninja_log
+++ /dev/null
@@ -1,7 +0,0 @@
-# ninja log v5
-1	1656	1695300534290875975	CMakeFiles/NPAnalysis.dir/Analysis.cxx.o	347c3e2100991f25
-1658	1739	1695300534383442421	libNPAnalysis.dylib	e562c682b4871f00
-16	847	1701680090608418567	CMakeFiles/NPAnalysis.dir/Analysis.cxx.o	a301c5350290ac9d
-847	885	1701680090649635627	libNPAnalysis.dylib	d27ffcc9974cc0be
-7	800	1701680808001962729	CMakeFiles/NPAnalysis.dir/Analysis.cxx.o	a301c5350290ac9d
-800	836	1701680808040090422	libNPAnalysis.dylib	d27ffcc9974cc0be
diff --git a/Projects/e870/Analysis.cxx b/Projects/e870/Analysis.cxx
index caa103f81..eb565fa96 100644
--- a/Projects/e870/Analysis.cxx
+++ b/Projects/e870/Analysis.cxx
@@ -142,7 +142,6 @@ void Analysis::TreatEvent() {
   //////////////////////////////// LOOP on MUST2  ////////////////////////////
   ////////////////////////////////////////////////////////////////////////////
   for (unsigned int countMust2 = 0; countMust2 < M2->Si_E.size(); countMust2++) {
-  std::cout << 1 << std::endl;
     /************************************************/
     // Part 0 : Get the usefull Data
     //  MUST2
diff --git a/Projects/e870/libNPAnalysis.dylib b/Projects/e870/libNPAnalysis.dylib
deleted file mode 100755
index 26bfd006771cecb21510ba31fe1757d51920e0de..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 93136
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
Z_nO<Twm)%9w`1rP^Je;X{dCTI{|DhBHJbnc

-- 
GitLab