diff --git a/NPLib/Sharc/TSharcPhysics.cxx b/NPLib/Sharc/TSharcPhysics.cxx
index 7d5e9a854259a9d048ad2f1e6515c3ecab1885cc..2d3ead7d307713210e461c1f8dc13622ec85ff6e 100644
--- a/NPLib/Sharc/TSharcPhysics.cxx
+++ b/NPLib/Sharc/TSharcPhysics.cxx
@@ -20,7 +20,7 @@
  *****************************************************************************/
 #include "TSharcPhysics.h"
 using namespace Sharc_LOCAL;
-   
+
 //   STL
 #include <sstream>
 #include <iostream>
@@ -38,400 +38,400 @@ using namespace Sharc_LOCAL;
 
 ClassImp(TSharcPhysics)
 ///////////////////////////////////////////////////////////////////////////
-TSharcPhysics::TSharcPhysics() 
-   { 
-      EventMultiplicity   = 0 ;
-      m_EventData         = new TSharcData ;
-      m_PreTreatedData    = new TSharcData ;
-      m_EventPhysics      = this ;
-      m_NumberOfDetector = 0 ;
-      m_MaximumStripMultiplicityAllowed = 10;
-      m_StripEnergyMatchingSigma = 0.060    ; 
-      m_StripEnergyMatchingNumberOfSigma = 3; 
-      
-    // Threshold
-      m_StripFront_E_RAW_Threshold = 0 ;
-      m_StripFront_E_Threshold = 0 ;
-      
-      m_StripBack_E_RAW_Threshold = 0 ;
-      m_StripBack_E_Threshold = 0 ;
-      
-      m_Take_E_Front=false;
-      m_Take_T_Back=true;
-   }
-      
+TSharcPhysics::TSharcPhysics()
+{
+  EventMultiplicity   = 0 ;
+  m_EventData         = new TSharcData ;
+  m_PreTreatedData    = new TSharcData ;
+  m_EventPhysics      = this ;
+  m_NumberOfDetector = 0 ;
+  m_MaximumStripMultiplicityAllowed = 10;
+  m_StripEnergyMatchingSigma = 0.060    ;
+  m_StripEnergyMatchingNumberOfSigma = 3;
+  
+  // Threshold
+  m_StripFront_E_RAW_Threshold = 0 ;
+  m_StripFront_E_Threshold = 0 ;
+  
+  m_StripBack_E_RAW_Threshold = 0 ;
+  m_StripBack_E_Threshold = 0 ;
+  
+  m_Take_E_Front=false;
+  m_Take_T_Back=true;
+}
+
 ///////////////////////////////////////////////////////////////////////////
 void TSharcPhysics::BuildSimplePhysicalEvent()
-   { 
-     BuildPhysicalEvent();
-   }
-   
+{
+  BuildPhysicalEvent();
+}
+
 ///////////////////////////////////////////////////////////////////////////
-   
+
 void TSharcPhysics::BuildPhysicalEvent()
-   { 
-      PreTreat();
-
-      bool check_PAD = false ;
-
-      if( CheckEvent() == 1 )
-         {
-            vector< TVector2 > couple = Match_Front_Back() ;
-            EventMultiplicity = couple.size();
-
-            for(unsigned int i = 0 ; i < couple.size() ; ++i)
-               {
-                  check_PAD = false ;
-                  
-                  int N = m_PreTreatedData->GetFront_DetectorNbr(couple[i].X()) ;
-                  int Front = m_PreTreatedData->GetFront_StripNbr(couple[i].X()) ;
-                  int Back  = m_PreTreatedData->GetBack_StripNbr(couple[i].Y()) ;
-                  double Front_E = m_PreTreatedData->GetFront_Energy( couple[i].X() ) ;
-                  double Back_E  = m_PreTreatedData->GetBack_Energy( couple[i].Y() ) ;  
-                  double Front_T = m_PreTreatedData->GetFront_TimeCFD( couple[i].X() ) ;
-                  double Back_T  = m_PreTreatedData->GetBack_TimeCFD ( couple[i].Y() ) ;
-
-                  DetectorNumber.push_back(N);
-                  StripFront_E.push_back(Front_E);
-                  StripFront_T.push_back(Front_T) ;
-                  StripBack_E.push_back(Back_E) ;
-                  StripBack_T.push_back(Back_T) ;
-
-                  if(m_Take_E_Front)
-                    Strip_E.push_back(Front_E) ;
-                  else
-                    Strip_E.push_back(Back_E) ;
-
-                  if(m_Take_T_Back)
-                    Strip_T.push_back(Back_T) ;
-                  else
-                    Strip_T.push_back(Front_T) ;
-
-                  Strip_Front.push_back(Front) ;
-                  Strip_Back.push_back(Back) ;
-
-                  // Search for associate PAD
-                  for(unsigned int j = 0 ; j < m_PreTreatedData-> GetMultiplicityPAD() ; ++j){
-                    if(m_PreTreatedData->GetPAD_DetectorNbr(j)==N){
-                      PAD_E.push_back( m_PreTreatedData-> GetPAD_Energy(j)) ;
-                      PAD_T.push_back( m_PreTreatedData-> GetPAD_TimeCFD(j)  ) ;
-                      check_PAD = true ;
-                    }
-                    
-                  }
-                     
-                  if(!check_PAD) 
-                     {
-                        PAD_E.push_back(-1000)   ;
-                        PAD_T.push_back(-1000)   ;
-                     }
-               }
-         }
-      return;
-   }   
+{
+  PreTreat();
+  
+  bool check_PAD = false ;
+  
+  if( CheckEvent() == 1 )
+    {
+    vector< TVector2 > couple = Match_Front_Back() ;
+    EventMultiplicity = couple.size();
+    
+    for(unsigned int i = 0 ; i < couple.size() ; ++i)
+      {
+      check_PAD = false ;
+      
+      int N = m_PreTreatedData->GetFront_DetectorNbr(couple[i].X()) ;
+      int Front = m_PreTreatedData->GetFront_StripNbr(couple[i].X()) ;
+      int Back  = m_PreTreatedData->GetBack_StripNbr(couple[i].Y()) ;
+      double Front_E = m_PreTreatedData->GetFront_Energy( couple[i].X() ) ;
+      double Back_E  = m_PreTreatedData->GetBack_Energy( couple[i].Y() ) ;
+      double Front_T = m_PreTreatedData->GetFront_TimeCFD( couple[i].X() ) ;
+      double Back_T  = m_PreTreatedData->GetBack_TimeCFD ( couple[i].Y() ) ;
+      
+      DetectorNumber.push_back(N);
+      StripFront_E.push_back(Front_E);
+      StripFront_T.push_back(Front_T) ;
+      StripBack_E.push_back(Back_E) ;
+      StripBack_T.push_back(Back_T) ;
+      
+      if(m_Take_E_Front)
+        Strip_E.push_back(Front_E) ;
+      else
+        Strip_E.push_back(Back_E) ;
+      
+      if(m_Take_T_Back)
+        Strip_T.push_back(Back_T) ;
+      else
+        Strip_T.push_back(Front_T) ;
+      
+      Strip_Front.push_back(Front) ;
+      Strip_Back.push_back(Back) ;
+      
+      // Search for associate PAD
+      for(unsigned int j = 0 ; j < m_PreTreatedData-> GetMultiplicityPAD() ; ++j){
+        if(m_PreTreatedData->GetPAD_DetectorNbr(j)==N){
+          PAD_E.push_back( m_PreTreatedData-> GetPAD_Energy(j)) ;
+          PAD_T.push_back( m_PreTreatedData-> GetPAD_TimeCFD(j)  ) ;
+          check_PAD = true ;
+        }
+        
+      }
+      
+      if(!check_PAD)
+        {
+        PAD_E.push_back(-1000)   ;
+        PAD_T.push_back(-1000)   ;
+        }
+      }
+    }
+  return;
+}
 
 ///////////////////////////////////////////////////////////////////////////
 void TSharcPhysics::PreTreat()
-   {
-      ClearPreTreatedData();
-   
-      //   Front
-         for(unsigned int i = 0 ; i < m_EventData->GetMultiplicityFront() ; ++i){
-           if( m_EventData->GetFront_Energy(i)>m_StripFront_E_RAW_Threshold && IsValidChannel("Front", m_EventData->GetFront_DetectorNbr(i), m_EventData->GetFront_StripNbr(i)) ){
-             double Front_E = fStrip_Front_E(m_EventData , i); 
-             if( Front_E > m_StripFront_E_Threshold ){
-                   m_PreTreatedData->SetFront_DetectorNbr( m_EventData->GetFront_DetectorNbr(i) );
-                   m_PreTreatedData->SetFront_StripNbr( m_EventData->GetFront_StripNbr(i) );
-                   m_PreTreatedData->SetFront_TimeCFD( m_EventData->GetFront_TimeCFD(i) );
-                   m_PreTreatedData->SetFront_Energy( Front_E );
-                   
-                }
-              }
-            }
-            
-         
-      //  Back
-         for(unsigned int i = 0 ; i < m_EventData->GetMultiplicityBack() ; ++i){
-           if( m_EventData->GetBack_Energy(i)>m_StripBack_E_RAW_Threshold && IsValidChannel("Back", m_EventData->GetBack_DetectorNbr(i), m_EventData->GetBack_StripNbr(i)) ){
-             double Back_E = fStrip_Back_E(m_EventData , i); 
-             if( Back_E > m_StripBack_E_Threshold ){
-                   m_PreTreatedData->SetBack_DetectorNbr( m_EventData->GetBack_DetectorNbr(i) );
-                   m_PreTreatedData->SetBack_StripNbr( m_EventData->GetBack_StripNbr(i) );
-                   m_PreTreatedData->SetBack_TimeCFD( m_EventData->GetBack_TimeCFD(i) );
-                   m_PreTreatedData->SetBack_Energy( Back_E );
-                }
-              }
-            }
-            
-      
-      //  PAD
-         for(unsigned int i = 0 ; i < m_EventData->GetMultiplicityPAD() ; ++i){
-           if( m_EventData->GetPAD_Energy(i)>m_PAD_E_RAW_Threshold && IsValidChannel("PAD", m_EventData->GetPAD_DetectorNbr(i),1) ){
-             double PAD_E = fPAD_E(m_EventData , i); 
-             if( PAD_E > m_PAD_E_Threshold ){
-                   m_PreTreatedData->SetPAD_DetectorNbr( m_EventData->GetPAD_DetectorNbr(i) );
-                   m_PreTreatedData->SetPAD_Energy( PAD_E );
-                   m_PreTreatedData->SetPAD_TimeCFD( m_EventData->GetPAD_TimeCFD(i) );
-                }
-              }
-            }
-            
+{
+  ClearPreTreatedData();
+  
+  //   Front
+  for(unsigned int i = 0 ; i < m_EventData->GetMultiplicityFront() ; ++i){
+    if( m_EventData->GetFront_Energy(i)>m_StripFront_E_RAW_Threshold && IsValidChannel("Front", m_EventData->GetFront_DetectorNbr(i), m_EventData->GetFront_StripNbr(i)) ){
+      double Front_E = fStrip_Front_E(m_EventData , i);
+      if( Front_E > m_StripFront_E_Threshold ){
+        m_PreTreatedData->SetFront_DetectorNbr( m_EventData->GetFront_DetectorNbr(i) );
+        m_PreTreatedData->SetFront_StripNbr( m_EventData->GetFront_StripNbr(i) );
+        m_PreTreatedData->SetFront_TimeCFD( m_EventData->GetFront_TimeCFD(i) );
+        m_PreTreatedData->SetFront_Energy( Front_E );
         
-
-      return;
-   }
+      }
+    }
+  }
+  
+  
+  //  Back
+  for(unsigned int i = 0 ; i < m_EventData->GetMultiplicityBack() ; ++i){
+    if( m_EventData->GetBack_Energy(i)>m_StripBack_E_RAW_Threshold && IsValidChannel("Back", m_EventData->GetBack_DetectorNbr(i), m_EventData->GetBack_StripNbr(i)) ){
+      double Back_E = fStrip_Back_E(m_EventData , i);
+      if( Back_E > m_StripBack_E_Threshold ){
+        m_PreTreatedData->SetBack_DetectorNbr( m_EventData->GetBack_DetectorNbr(i) );
+        m_PreTreatedData->SetBack_StripNbr( m_EventData->GetBack_StripNbr(i) );
+        m_PreTreatedData->SetBack_TimeCFD( m_EventData->GetBack_TimeCFD(i) );
+        m_PreTreatedData->SetBack_Energy( Back_E );
+      }
+    }
+  }
+  
+  
+  //  PAD
+  for(unsigned int i = 0 ; i < m_EventData->GetMultiplicityPAD() ; ++i){
+    if( m_EventData->GetPAD_Energy(i)>m_PAD_E_RAW_Threshold && IsValidChannel("PAD", m_EventData->GetPAD_DetectorNbr(i),1) ){
+      double PAD_E = fPAD_E(m_EventData , i);
+      if( PAD_E > m_PAD_E_Threshold ){
+        m_PreTreatedData->SetPAD_DetectorNbr( m_EventData->GetPAD_DetectorNbr(i) );
+        m_PreTreatedData->SetPAD_Energy( PAD_E );
+        m_PreTreatedData->SetPAD_TimeCFD( m_EventData->GetPAD_TimeCFD(i) );
+      }
+    }
+  }
+  
+  
+  
+  return;
+}
 
 
 ///////////////////////////////////////////////////////////////////////////
 int TSharcPhysics :: CheckEvent()
-   {
-      // Check the size of the different elements
-      if(         m_PreTreatedData->GetMultiplicityBack() == m_PreTreatedData->GetMultiplicityFront() )
-         return 1 ; // Regular Event
-      
-      else    
-         return -1 ; // Rejected Event
-
-   }
+{
+  // Check the size of the different elements
+  if(         m_PreTreatedData->GetMultiplicityBack() == m_PreTreatedData->GetMultiplicityFront() )
+    return 1 ; // Regular Event
+  
+  else
+    return -1 ; // Rejected Event
+  
+}
 
 ///////////////////////////////////////////////////////////////////////////
 vector < TVector2 > TSharcPhysics :: Match_Front_Back()
-   {
-      vector < TVector2 > ArrayOfGoodCouple ;
-      
-      // Prevent code from treating very high multiplicity Event
-      // Those event are not physical anyway and that improve speed.
-      if( m_PreTreatedData->GetMultiplicityFront() > m_MaximumStripMultiplicityAllowed || m_PreTreatedData->GetMultiplicityBack() > m_MaximumStripMultiplicityAllowed )
-         return ArrayOfGoodCouple;
-      
-      for(unsigned int i = 0 ; i < m_PreTreatedData->GetMultiplicityFront(); i++) {
-        for(unsigned int j = 0 ; j < m_PreTreatedData->GetMultiplicityBack(); j++){
-          //   if same detector check energy
-          if ( m_PreTreatedData->GetFront_DetectorNbr(i) == m_PreTreatedData->GetBack_DetectorNbr(j) ){
-            //   Look if energy match
-            if( abs( (m_PreTreatedData->GetFront_Energy(i)-m_PreTreatedData->GetBack_Energy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma )
-               ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;   
-         }
-       }
-     }
-   
-      //   Prevent to treat event with ambiguous matchin beetween X and Y
-      if( ArrayOfGoodCouple.size() > m_PreTreatedData->GetMultiplicityFront() ) ArrayOfGoodCouple.clear() ;
-      return ArrayOfGoodCouple;   
-   }
-   
-   
-////////////////////////////////////////////////////////////////////////////
-bool TSharcPhysics :: IsValidChannel(const string DetectorType, const int telescope , const int channel) 
-   {
-     
-           if(DetectorType == "Front")
-            return *(m_FrontChannelStatus[telescope-1].begin()+channel-1);
-         
-      else if(DetectorType == "Back")
-            return *(m_BackChannelStatus[telescope-1].begin()+channel-1);
-         
-      else if(DetectorType == "PAD")
-            return *(m_PADChannelStatus[telescope-1].begin()+channel-1);
-         
-      else return false;
-   }
-   
-///////////////////////////////////////////////////////////////////////////
-void TSharcPhysics::ReadAnalysisConfig()
 {
-   bool ReadingStatus = false;
+  vector < TVector2 > ArrayOfGoodCouple ;
+  
+  // Prevent code from treating very high multiplicity Event
+  // Those event are not physical anyway and that improve speed.
+  if( m_PreTreatedData->GetMultiplicityFront() > m_MaximumStripMultiplicityAllowed || m_PreTreatedData->GetMultiplicityBack() > m_MaximumStripMultiplicityAllowed )
+    return ArrayOfGoodCouple;
+  
+  for(unsigned int i = 0 ; i < m_PreTreatedData->GetMultiplicityFront(); i++) {
+    for(unsigned int j = 0 ; j < m_PreTreatedData->GetMultiplicityBack(); j++){
+      //   if same detector check energy
+      if ( m_PreTreatedData->GetFront_DetectorNbr(i) == m_PreTreatedData->GetBack_DetectorNbr(j) ){
+        //   Look if energy match
+        if( abs( (m_PreTreatedData->GetFront_Energy(i)-m_PreTreatedData->GetBack_Energy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma )
+          ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
+      }
+    }
+  }
+  
+  //   Prevent to treat event with ambiguous matchin beetween X and Y
+  if( ArrayOfGoodCouple.size() > m_PreTreatedData->GetMultiplicityFront() ) ArrayOfGoodCouple.clear() ;
+  return ArrayOfGoodCouple;
+}
 
-   // path to file
-   string FileName = "./configs/ConfigSharc.dat";
 
-   // open analysis config file
-   ifstream AnalysisConfigFile;
-   AnalysisConfigFile.open(FileName.c_str());
+////////////////////////////////////////////////////////////////////////////
+bool TSharcPhysics :: IsValidChannel(const string DetectorType, const int telescope , const int channel)
+{
+  
+  if(DetectorType == "Front")
+    return *(m_FrontChannelStatus[telescope-1].begin()+channel-1);
+  
+  else if(DetectorType == "Back")
+    return *(m_BackChannelStatus[telescope-1].begin()+channel-1);
+  
+  else if(DetectorType == "PAD")
+    return *(m_PADChannelStatus[telescope-1].begin()+channel-1);
+  
+  else return false;
+}
 
-   if (!AnalysisConfigFile.is_open()) {
-      cout << " No ConfigSharc.dat found: Default parameter loaded for Analayis " << FileName << endl;
-      return;
-   }
-   cout << " Loading user parameter for Analysis from ConfigSharc.dat " << endl;
-   
-   // Save it in a TAsciiFile
-   TAsciiFile* asciiConfig = RootOutput::getInstance()->GetAsciiFileAnalysisConfig();
-   asciiConfig->AppendLine("%%% ConfigSharc.dat %%%");
-   asciiConfig->Append(FileName.c_str());
-   asciiConfig->AppendLine("");
-   // read analysis config file
-   string LineBuffer,DataBuffer,whatToDo;
-   while (!AnalysisConfigFile.eof()) {
-      // Pick-up next line
-      getline(AnalysisConfigFile, LineBuffer);
-
-      // search for "header"
-      if (LineBuffer.compare(0, 11, "ConfigSharc") == 0) ReadingStatus = true;
-
-      // loop on tokens and data
-      while (ReadingStatus ) {
-
-          whatToDo="";
-          AnalysisConfigFile >> whatToDo;
-         
-         // Search for comment symbol (%)
-         if (whatToDo.compare(0, 1, "%") == 0) {
-            AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n' );
-         }
-         
-           else if (whatToDo=="MAX_STRIP_MULTIPLICITY") { 
-            AnalysisConfigFile >> DataBuffer;
-            m_MaximumStripMultiplicityAllowed = atoi(DataBuffer.c_str() );
-            cout << "MAXIMUN STRIP MULTIPLICITY " << m_MaximumStripMultiplicityAllowed << endl;
-         }
-         
-          else if (whatToDo=="STRIP_ENERGY_MATCHING_SIGMA") {
-            AnalysisConfigFile >> DataBuffer;
-            m_StripEnergyMatchingSigma = atof(DataBuffer.c_str() );
-            cout << "STRIP ENERGY MATCHING SIGMA " << m_StripEnergyMatchingSigma <<endl;
-         }
-         
-         else if (whatToDo=="STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA") {
-            AnalysisConfigFile >> DataBuffer;
-            m_StripEnergyMatchingNumberOfSigma = atoi(DataBuffer.c_str() );
-            cout << "STRIP ENERGY MATCHING NUMBER OF SIGMA " << m_StripEnergyMatchingNumberOfSigma << endl;
-         }
-         
-         else if (whatToDo== "DISABLE_ALL") {
-               AnalysisConfigFile >> DataBuffer;
-               cout << whatToDo << "  " << DataBuffer << endl;
-               int Detector = atoi(DataBuffer.substr(2,1).c_str());
-               vector< bool > ChannelStatus;
-               ChannelStatus.resize(24,false);
-               m_FrontChannelStatus[Detector-1] = ChannelStatus;
-               ChannelStatus.resize(48,false);
-               m_BackChannelStatus[Detector-1] = ChannelStatus;
-               ChannelStatus.resize(1,false);
-               m_PADChannelStatus[Detector-1] = ChannelStatus;
-            }
-            
-        else if (whatToDo == "DISABLE_CHANNEL") {
-           AnalysisConfigFile >> DataBuffer;
-           cout << whatToDo << "  " << DataBuffer << endl;
-           int Detector = atoi(DataBuffer.substr(2,1).c_str());
-           int channel = -1;
-           if (DataBuffer.compare(3,4,"STRF") == 0) {
-              channel = atoi(DataBuffer.substr(7).c_str());
-              *(m_FrontChannelStatus[Detector-1].begin()+channel-1) = false;
-           }
-           
-           else if (DataBuffer.compare(3,4,"STRB") == 0) {
-              channel = atoi(DataBuffer.substr(7).c_str());
-              *(m_BackChannelStatus[Detector-1].begin()+channel-1) = false;
-           }
-           
-           else if (DataBuffer.compare(3,3,"PAD") == 0) {
-              channel = atoi(DataBuffer.substr(6).c_str());
-              *(m_PADChannelStatus[Detector-1].begin()+channel-1) = false;
-           }
-           
-           else cout << "Warning: detector type for Sharc unknown!" << endl;
-       
-        } 
-   
-        else if (whatToDo=="TAKE_E_FRONT") {
-           m_Take_E_Front = true;
-           cout << whatToDo << endl;
-        } 
-        
-        else if (whatToDo=="TAKE_E_BACK") {
-           m_Take_E_Front = false;
-           cout << whatToDo << endl;
-        }
-        
-        else if (whatToDo=="TAKE_T_FRONT") {
-           m_Take_T_Back = false;
-           cout << whatToDo << endl;
+///////////////////////////////////////////////////////////////////////////
+void TSharcPhysics::ReadAnalysisConfig()
+{
+  bool ReadingStatus = false;
+  
+  // path to file
+  string FileName = "./configs/ConfigSharc.dat";
+  
+  // open analysis config file
+  ifstream AnalysisConfigFile;
+  AnalysisConfigFile.open(FileName.c_str());
+  
+  if (!AnalysisConfigFile.is_open()) {
+    cout << " No ConfigSharc.dat found: Default parameter loaded for Analayis " << FileName << endl;
+    return;
+  }
+  cout << " Loading user parameter for Analysis from ConfigSharc.dat " << endl;
+  
+  // Save it in a TAsciiFile
+  TAsciiFile* asciiConfig = RootOutput::getInstance()->GetAsciiFileAnalysisConfig();
+  asciiConfig->AppendLine("%%% ConfigSharc.dat %%%");
+  asciiConfig->Append(FileName.c_str());
+  asciiConfig->AppendLine("");
+  // read analysis config file
+  string LineBuffer,DataBuffer,whatToDo;
+  while (!AnalysisConfigFile.eof()) {
+    // Pick-up next line
+    getline(AnalysisConfigFile, LineBuffer);
+    
+    // search for "header"
+    if (LineBuffer.compare(0, 11, "ConfigSharc") == 0) ReadingStatus = true;
+    
+    // loop on tokens and data
+    while (ReadingStatus ) {
+      
+      whatToDo="";
+      AnalysisConfigFile >> whatToDo;
+      
+      // Search for comment symbol (%)
+      if (whatToDo.compare(0, 1, "%") == 0) {
+        AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n' );
+      }
+      
+      else if (whatToDo=="MAX_STRIP_MULTIPLICITY") {
+        AnalysisConfigFile >> DataBuffer;
+        m_MaximumStripMultiplicityAllowed = atoi(DataBuffer.c_str() );
+        cout << "MAXIMUN STRIP MULTIPLICITY " << m_MaximumStripMultiplicityAllowed << endl;
+      }
+      
+      else if (whatToDo=="STRIP_ENERGY_MATCHING_SIGMA") {
+        AnalysisConfigFile >> DataBuffer;
+        m_StripEnergyMatchingSigma = atof(DataBuffer.c_str() );
+        cout << "STRIP ENERGY MATCHING SIGMA " << m_StripEnergyMatchingSigma <<endl;
+      }
+      
+      else if (whatToDo=="STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA") {
+        AnalysisConfigFile >> DataBuffer;
+        m_StripEnergyMatchingNumberOfSigma = atoi(DataBuffer.c_str() );
+        cout << "STRIP ENERGY MATCHING NUMBER OF SIGMA " << m_StripEnergyMatchingNumberOfSigma << endl;
+      }
+      
+      else if (whatToDo== "DISABLE_ALL") {
+        AnalysisConfigFile >> DataBuffer;
+        cout << whatToDo << "  " << DataBuffer << endl;
+        int Detector = atoi(DataBuffer.substr(2,1).c_str());
+        vector< bool > ChannelStatus;
+        ChannelStatus.resize(24,false);
+        m_FrontChannelStatus[Detector-1] = ChannelStatus;
+        ChannelStatus.resize(48,false);
+        m_BackChannelStatus[Detector-1] = ChannelStatus;
+        ChannelStatus.resize(1,false);
+        m_PADChannelStatus[Detector-1] = ChannelStatus;
+      }
+      
+      else if (whatToDo == "DISABLE_CHANNEL") {
+        AnalysisConfigFile >> DataBuffer;
+        cout << whatToDo << "  " << DataBuffer << endl;
+        int Detector = atoi(DataBuffer.substr(2,1).c_str());
+        int channel = -1;
+        if (DataBuffer.compare(3,4,"STRF") == 0) {
+          channel = atoi(DataBuffer.substr(7).c_str());
+          *(m_FrontChannelStatus[Detector-1].begin()+channel-1) = false;
         }
         
-        else if (whatToDo=="TAKE_T_BACK") {
-           m_Take_T_Back = true;
-           cout << whatToDo << endl;
+        else if (DataBuffer.compare(3,4,"STRB") == 0) {
+          channel = atoi(DataBuffer.substr(7).c_str());
+          *(m_BackChannelStatus[Detector-1].begin()+channel-1) = false;
         }
-           
-        else if (whatToDo=="STRIP_FRONT_E_RAW_THRESHOLD") {
-           AnalysisConfigFile >> DataBuffer;
-           m_StripFront_E_RAW_Threshold = atoi(DataBuffer.c_str());
-           cout << whatToDo << " " << m_StripFront_E_RAW_Threshold << endl;
-        }  
-        
-        else if (whatToDo=="STRIP_BACK_E_RAW_THRESHOLD") {
-           AnalysisConfigFile >> DataBuffer;
-           m_StripBack_E_RAW_Threshold = atoi(DataBuffer.c_str());
-           cout << whatToDo << " " << m_StripBack_E_RAW_Threshold << endl;
-        } 
-      
-        else if (whatToDo=="STRIP_FRONT_E_THRESHOLD") {
-           AnalysisConfigFile >> DataBuffer;
-           m_StripFront_E_Threshold = atoi(DataBuffer.c_str());
-           cout << whatToDo << " " << m_StripFront_E_Threshold << endl;
-        }  
         
-        else if (whatToDo=="STRIP_BACK_THRESHOLD") {
-           AnalysisConfigFile >> DataBuffer;
-           m_StripBack_E_Threshold = atoi(DataBuffer.c_str());
-           cout << whatToDo << " " << m_StripBack_E_Threshold << endl;
+        else if (DataBuffer.compare(3,3,"PAD") == 0) {
+          channel = atoi(DataBuffer.substr(6).c_str());
+          *(m_PADChannelStatus[Detector-1].begin()+channel-1) = false;
         }
         
-        else if (whatToDo=="PAD_E_RAW_THRESHOLD") {
-           AnalysisConfigFile >> DataBuffer;
-           m_PAD_E_RAW_Threshold = atoi(DataBuffer.c_str());
-           cout << whatToDo << " " << m_PAD_E_RAW_Threshold << endl;
-        }
+        else cout << "Warning: detector type for Sharc unknown!" << endl;
         
-        else if (whatToDo=="PAD_E_THRESHOLD") {
-           AnalysisConfigFile >> DataBuffer;
-           m_PAD_E_Threshold = atoi(DataBuffer.c_str());
-           cout << whatToDo << " " << m_PAD_E_Threshold << endl;
-        }
-   
-       else {
-          ReadingStatus = false;
-       }
-       
       }
-   }
-
-}   
+      
+      else if (whatToDo=="TAKE_E_FRONT") {
+        m_Take_E_Front = true;
+        cout << whatToDo << endl;
+      }
+      
+      else if (whatToDo=="TAKE_E_BACK") {
+        m_Take_E_Front = false;
+        cout << whatToDo << endl;
+      }
+      
+      else if (whatToDo=="TAKE_T_FRONT") {
+        m_Take_T_Back = false;
+        cout << whatToDo << endl;
+      }
+      
+      else if (whatToDo=="TAKE_T_BACK") {
+        m_Take_T_Back = true;
+        cout << whatToDo << endl;
+      }
+      
+      else if (whatToDo=="STRIP_FRONT_E_RAW_THRESHOLD") {
+        AnalysisConfigFile >> DataBuffer;
+        m_StripFront_E_RAW_Threshold = atoi(DataBuffer.c_str());
+        cout << whatToDo << " " << m_StripFront_E_RAW_Threshold << endl;
+      }
+      
+      else if (whatToDo=="STRIP_BACK_E_RAW_THRESHOLD") {
+        AnalysisConfigFile >> DataBuffer;
+        m_StripBack_E_RAW_Threshold = atoi(DataBuffer.c_str());
+        cout << whatToDo << " " << m_StripBack_E_RAW_Threshold << endl;
+      }
+      
+      else if (whatToDo=="STRIP_FRONT_E_THRESHOLD") {
+        AnalysisConfigFile >> DataBuffer;
+        m_StripFront_E_Threshold = atoi(DataBuffer.c_str());
+        cout << whatToDo << " " << m_StripFront_E_Threshold << endl;
+      }
+      
+      else if (whatToDo=="STRIP_BACK_THRESHOLD") {
+        AnalysisConfigFile >> DataBuffer;
+        m_StripBack_E_Threshold = atoi(DataBuffer.c_str());
+        cout << whatToDo << " " << m_StripBack_E_Threshold << endl;
+      }
+      
+      else if (whatToDo=="PAD_E_RAW_THRESHOLD") {
+        AnalysisConfigFile >> DataBuffer;
+        m_PAD_E_RAW_Threshold = atoi(DataBuffer.c_str());
+        cout << whatToDo << " " << m_PAD_E_RAW_Threshold << endl;
+      }
+      
+      else if (whatToDo=="PAD_E_THRESHOLD") {
+        AnalysisConfigFile >> DataBuffer;
+        m_PAD_E_Threshold = atoi(DataBuffer.c_str());
+        cout << whatToDo << " " << m_PAD_E_Threshold << endl;
+      }
+      
+      else {
+        ReadingStatus = false;
+      }
+      
+    }
+  }
+  
+}
 
 
 ///////////////////////////////////////////////////////////////////////////
 void TSharcPhysics::Clear()
-   {
-      EventMultiplicity = 0;
-             
-      //   Provide a Classification of Event
-      EventType.clear() ;
-       
-      // Detector
-      DetectorNumber.clear() ;
-
-      //   DSSD
-      Strip_E.clear() ;
-      Strip_T.clear() ;
-      StripFront_E.clear() ;
-      StripFront_T.clear();
-      StripBack_E.clear() ;
-      StripBack_T.clear() ;
-      Strip_Front.clear() ;
-      Strip_Back.clear() ;
-
-      // PAD
-      PAD_E.clear() ;
-      PAD_T.clear() ;
-   }
+{
+  EventMultiplicity = 0;
+  
+  //   Provide a Classification of Event
+  EventType.clear() ;
+  
+  // Detector
+  DetectorNumber.clear() ;
+  
+  //   DSSD
+  Strip_E.clear() ;
+  Strip_T.clear() ;
+  StripFront_E.clear() ;
+  StripFront_T.clear();
+  StripBack_E.clear() ;
+  StripBack_T.clear() ;
+  Strip_Front.clear() ;
+  Strip_Back.clear() ;
+  
+  // PAD
+  PAD_E.clear() ;
+  PAD_T.clear() ;
+}
 ///////////////////////////////////////////////////////////////////////////
 
-////   Innherited from VDetector Class   ////            
-            
+////   Innherited from VDetector Class   ////
+
 ///////////////////////////////////////////////////////////////////////////
-void TSharcPhysics::ReadConfiguration(string Path)  
+void TSharcPhysics::ReadConfiguration(string Path)
 {
   ifstream ConfigFile           ;
   ConfigFile.open(Path.c_str()) ;
@@ -600,312 +600,315 @@ void TSharcPhysics::ReadConfiguration(string Path)
     }
   }
   
-   InitializeStandardParameter();        
-   ReadAnalysisConfig();
+  InitializeStandardParameter();
+  ReadAnalysisConfig();
 }
 
 ///////////////////////////////////////////////////////////////////////////
-void TSharcPhysics::AddParameterToCalibrationManager()   
-   {
-      CalibrationManager* Cal = CalibrationManager::getInstance();
-      
-      for(int i = 0 ; i < m_NumberOfDetector ; ++i)
-         {
-         
-            for( int j = 0 ; j < 24 ; ++j)
-               {
-                  Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_E","SHARC_D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_E")   ;
-                  Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_T","SHARC_D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_T")   ;
-               }
-               
-             for( int j = 0 ; j < 48 ; ++j)
-               {
-                  Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_E","SHARC_D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_E")   ;
-                  Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_T","SHARC_D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_T")   ;  
-               }
-      
-            for( int j = 0 ; j < 1 ; ++j)
-               {
-                  Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_PAD"+itoa(j+1)+"_E","SHARC_D"+itoa(i+1)+"_PAD_E")   ;
-                  Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_PAD"+itoa(j+1)+"_T","SHARC_D"+itoa(i+1)+"_PAD_T")   ;
-               }
-         }
-         
-      return;
-   
-   }
+void TSharcPhysics::AddParameterToCalibrationManager()
+{
+  CalibrationManager* Cal = CalibrationManager::getInstance();
+  
+  for(int i = 0 ; i < m_NumberOfDetector ; ++i)
+    {
+    
+    for( int j = 0 ; j < 24 ; ++j)
+      {
+      Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_E","SHARC_D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_E")   ;
+      Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_T","SHARC_D"+itoa(i+1)+"_STRIP_FRONT"+itoa(j+1)+"_T")   ;
+      }
+    
+    for( int j = 0 ; j < 48 ; ++j)
+      {
+      Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_E","SHARC_D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_E")   ;
+      Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_T","SHARC_D"+itoa(i+1)+"_STRIP_BACK"+itoa(j+1)+"_T")   ;
+      }
+    
+    for( int j = 0 ; j < 1 ; ++j)
+      {
+      Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_PAD"+itoa(j+1)+"_E","SHARC_D"+itoa(i+1)+"_PAD_E")   ;
+      Cal->AddParameter("SHARC", "D"+itoa(i+1)+"_PAD"+itoa(j+1)+"_T","SHARC_D"+itoa(i+1)+"_PAD_T")   ;
+      }
+    }
+  
+  return;
+  
+}
 
 ///////////////////////////////////////////////////////////////////////////
-void TSharcPhysics::InitializeRootInputRaw() 
-   {
-      TChain* inputChain = RootInput::getInstance()->GetChain()   ;
-      inputChain->SetBranchStatus( "Sharc" , true )               ;
-      inputChain->SetBranchStatus( "fSharc_*" , true )               ;
-      inputChain->SetBranchAddress( "Sharc" , &m_EventData )      ;
-   }
-   
+void TSharcPhysics::InitializeRootInputRaw()
+{
+  TChain* inputChain = RootInput::getInstance()->GetChain()   ;
+  inputChain->SetBranchStatus( "Sharc" , true )               ;
+  inputChain->SetBranchStatus( "fSharc_*" , true )               ;
+  inputChain->SetBranchAddress( "Sharc" , &m_EventData )      ;
+}
+
 ///////////////////////////////////////////////////////////////////////////
-void TSharcPhysics::InitializeRootInputPhysics() 
-   {
-      TChain* inputChain = RootInput::getInstance()->GetChain();
-      inputChain->SetBranchStatus( "EventMultiplicity" , true );      
-      inputChain->SetBranchStatus( "EventType " , true );
-      inputChain->SetBranchStatus( "DetectorNumber " , true );
-      inputChain->SetBranchStatus( "Strip_E " , true );
-      inputChain->SetBranchStatus( "Strip_T " , true );
-      inputChain->SetBranchStatus( "StripFront_E " , true );
-      inputChain->SetBranchStatus( "StripBack_T " , true );
-      inputChain->SetBranchStatus( "StripFront_E " , true );
-      inputChain->SetBranchStatus( "StripBack_T " , true );
-      inputChain->SetBranchStatus( "Strip_Front " , true );
-      inputChain->SetBranchStatus( "Strip_Back " , true );
-      inputChain->SetBranchStatus( "PAD_E " , true );
-      inputChain->SetBranchStatus( "PAD_T " , true );
-   }
+void TSharcPhysics::InitializeRootInputPhysics()
+{
+  TChain* inputChain = RootInput::getInstance()->GetChain();
+  inputChain->SetBranchStatus( "EventMultiplicity" , true );
+  inputChain->SetBranchStatus( "EventType " , true );
+  inputChain->SetBranchStatus( "DetectorNumber " , true );
+  inputChain->SetBranchStatus( "Strip_E " , true );
+  inputChain->SetBranchStatus( "Strip_T " , true );
+  inputChain->SetBranchStatus( "StripFront_E " , true );
+  inputChain->SetBranchStatus( "StripBack_T " , true );
+  inputChain->SetBranchStatus( "StripFront_E " , true );
+  inputChain->SetBranchStatus( "StripBack_T " , true );
+  inputChain->SetBranchStatus( "Strip_Front " , true );
+  inputChain->SetBranchStatus( "Strip_Back " , true );
+  inputChain->SetBranchStatus( "PAD_E " , true );
+  inputChain->SetBranchStatus( "PAD_T " , true );
+}
 
 ///////////////////////////////////////////////////////////////////////////
-void TSharcPhysics::InitializeRootOutput()    
-   {
-      TTree* outputTree = RootOutput::getInstance()->GetTree();
-      outputTree->Branch( "Sharc" , "TSharcPhysics" , &m_EventPhysics );
-   }
+void TSharcPhysics::InitializeRootOutput()
+{
+  TTree* outputTree = RootOutput::getInstance()->GetTree();
+  outputTree->Branch( "Sharc" , "TSharcPhysics" , &m_EventPhysics );
+}
 
 
 /////   Specific to SharcArray   ////
 
 void TSharcPhysics::AddBoxDetector(double Z)
-   {
-      double BOX_Wafer_Width  = 52.20;
-      double BOX_Wafer_Length = 76.20;
-      int    BOX_Wafer_Front_NumberOfStrip = 24 ;
-      int    BOX_Wafer_Back_NumberOfStrip = 48 ;
-      
-      double StripPitchFront = BOX_Wafer_Length/BOX_Wafer_Front_NumberOfStrip ; //mm
-      double StripPitchBack  = BOX_Wafer_Width/BOX_Wafer_Back_NumberOfStrip ; //mm
-      
-      TVector3 U; TVector3 V;TVector3 Strip_1_1;
-      for(int i = 0 ; i < 4 ; i++){
-        m_NumberOfDetector++;
-        if(Z<0){// Up Stream
-          
-             if(i==0) {U=TVector3(1,0,0);V=TVector3(0,0,1);  Strip_1_1=TVector3(-36.,42.5,-56.)   ;}
-        else if(i==1) {U=TVector3(0,1,0);V=TVector3(0,0,1);  Strip_1_1=TVector3(-42.5,-36.,-56.)  ;}
-        else if(i==2) {U=TVector3(-1,0,0);V=TVector3(0,0,1); Strip_1_1=TVector3(36.,-42.5,-56.)   ;}
-        else if(i==3) {U=TVector3(0,-1,0);V=TVector3(0,0,1); Strip_1_1=TVector3(42.5,36.,-56.)    ;}
-        }
+{
+  double BOX_Wafer_Width  = 52.20;
+  double BOX_Wafer_Length = 76.20;
+  int    BOX_Wafer_Front_NumberOfStrip = 24 ;
+  int    BOX_Wafer_Back_NumberOfStrip = 48 ;
+  
+  double StripPitchFront = BOX_Wafer_Length/BOX_Wafer_Front_NumberOfStrip ; //mm
+  double StripPitchBack  = BOX_Wafer_Width/BOX_Wafer_Back_NumberOfStrip ; //mm
+  
+  TVector3 U; TVector3 V;TVector3 Strip_1_1;
+  for(int i = 0 ; i < 4 ; i++){
+    m_NumberOfDetector++;
+    if(Z<0){// Up Stream
+      
+      if(i==0) {U=TVector3(1,0,0);V=TVector3(0,0,1);  Strip_1_1=TVector3(-36.,42.5,-56.)   ;}
+      else if(i==1) {U=TVector3(0,1,0);V=TVector3(0,0,1);  Strip_1_1=TVector3(-42.5,-36.,-56.)  ;}
+      else if(i==2) {U=TVector3(-1,0,0);V=TVector3(0,0,1); Strip_1_1=TVector3(36.,-42.5,-56.)   ;}
+      else if(i==3) {U=TVector3(0,-1,0);V=TVector3(0,0,1); Strip_1_1=TVector3(42.5,36.,-56.)    ;}
+    }
+    
+    if(Z>0){//Down Stream
+      if(i==0) {U=TVector3(-1,0,0);V=TVector3(0,0,-1); Strip_1_1=TVector3(36.,40.5,60.)   ;}
+      else if(i==1) {U=TVector3(0,-1,0);V=TVector3(0,0,-1); Strip_1_1=TVector3(-40.5,36.,60.)  ;}
+      else if(i==2) {U=TVector3(1,0,0);V=TVector3(0,0,-1);  Strip_1_1=TVector3(-36.,-40.5,60.)  ;}
+      else if(i==3) {U=TVector3(0,1,0);V=TVector3(0,0,-1);  Strip_1_1=TVector3(40.5,-36.,60.)   ;}
+    }
+    
+    //   Buffer object to fill Position Array
+    vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
+    
+    vector< vector< double > >   OneBoxStripPositionX   ;
+    vector< vector< double > >   OneBoxStripPositionY   ;
+    vector< vector< double > >   OneBoxStripPositionZ   ;
+    
+    TVector3 StripCenter = Strip_1_1;
+    for(int f = 0 ; f < BOX_Wafer_Front_NumberOfStrip ; f++){
+      lineX.clear()   ;
+      lineY.clear()   ;
+      lineZ.clear()   ;
+      
+      for(int b = 0 ; b < BOX_Wafer_Back_NumberOfStrip ; b++){
+        StripCenter = Strip_1_1 + ( StripPitchFront*f*U + StripPitchBack*b*V  );
         
-        if(Z>0){//Down Stream
-             if(i==0) {U=TVector3(-1,0,0);V=TVector3(0,0,-1); Strip_1_1=TVector3(36.,40.5,60.)   ;}
-        else if(i==1) {U=TVector3(0,-1,0);V=TVector3(0,0,-1); Strip_1_1=TVector3(-40.5,36.,60.)  ;}
-        else if(i==2) {U=TVector3(1,0,0);V=TVector3(0,0,-1);  Strip_1_1=TVector3(-36.,-40.5,60.)  ;}
-        else if(i==3) {U=TVector3(0,1,0);V=TVector3(0,0,-1);  Strip_1_1=TVector3(40.5,-36.,60.)   ;}
-        }
-      
-        //   Buffer object to fill Position Array
-        vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
-
-        vector< vector< double > >   OneBoxStripPositionX   ;
-        vector< vector< double > >   OneBoxStripPositionY   ;
-        vector< vector< double > >   OneBoxStripPositionZ   ;
+        lineX.push_back( StripCenter.X() );
+        lineY.push_back( StripCenter.Y() );
+        lineZ.push_back( StripCenter.Z() );
+        //   cout << "D" << m_NumberOfDetector << " F"<<f << " B" <<b<< "("<< StripCenter.X() << ";"<<StripCenter.Y()<< ";"<<StripCenter.Z()<<")"<<endl;
+      }
       
-        TVector3 StripCenter = Strip_1_1;
-        for(int f = 0 ; f < BOX_Wafer_Front_NumberOfStrip ; f++){
-          lineX.clear()   ;
-          lineY.clear()   ;
-          lineZ.clear()   ;
-
-          for(int b = 0 ; b < BOX_Wafer_Back_NumberOfStrip ; b++){
-            StripCenter = Strip_1_1 + ( StripPitchFront*f*U + StripPitchBack*b*V  );
+      OneBoxStripPositionX.push_back(lineX);
+      OneBoxStripPositionY.push_back(lineY);
+      OneBoxStripPositionZ.push_back(lineZ);
+    }
+    m_StripPositionX.push_back( OneBoxStripPositionX ) ;
+    m_StripPositionY.push_back( OneBoxStripPositionY ) ;
+    m_StripPositionZ.push_back( OneBoxStripPositionZ ) ;
+  }
+}
 
-            lineX.push_back( StripCenter.X() );
-            lineY.push_back( StripCenter.Y() );
-            lineZ.push_back( StripCenter.Z() );   
-                     //   cout << "D" << m_NumberOfDetector << " F"<<f << " B" <<b<< "("<< StripCenter.X() << ";"<<StripCenter.Y()<< ";"<<StripCenter.Z()<<")"<<endl;
-          }
-          
-          OneBoxStripPositionX.push_back(lineX);
-          OneBoxStripPositionY.push_back(lineY);
-          OneBoxStripPositionZ.push_back(lineZ);
-       }
-        m_StripPositionX.push_back( OneBoxStripPositionX ) ;
-        m_StripPositionY.push_back( OneBoxStripPositionY ) ;
-        m_StripPositionZ.push_back( OneBoxStripPositionZ ) ;   
-      }
-   }
-   
 void TSharcPhysics::AddQQQDetector( double R,double Phi,double Z){
-      
-      double QQQ_R_Min = 9.;
-      double QQQ_R_Max = 41.0;
-      
-      double QQQ_Phi_Min = 2.0*M_PI/180.  ;
-      double QQQ_Phi_Max = 83.6*M_PI/180. ;
-      Phi= Phi*M_PI/180.;
-      Z= -63.5;
-      
-      int    QQQ_Radial_NumberOfStrip = 16 ;
-      int    QQQ_Sector_NumberOfStrip = 24 ;
-      
-      double StripPitchSector = (QQQ_Phi_Max-QQQ_Phi_Min)/QQQ_Sector_NumberOfStrip ; //radial strip spacing in rad
-      double StripPitchRadial = (QQQ_R_Max-QQQ_R_Min)/QQQ_Radial_NumberOfStrip  ; // ring strip spacing in mm
-      
-      TVector3 Strip_1_1;
+  
+  double QQQ_R_Min = 9.+R-R;
+  double QQQ_R_Max = 41.0;
+  
+  double QQQ_Phi_Min = 2.0*M_PI/180.  ;
+  double QQQ_Phi_Max = 83.6*M_PI/180. ;
+  Phi= Phi*M_PI/180.;
+  Z= -63.5;
+  
+  int    QQQ_Radial_NumberOfStrip = 16 ;
+  int    QQQ_Sector_NumberOfStrip = 24 ;
+  
+  double StripPitchSector = (QQQ_Phi_Max-QQQ_Phi_Min)/QQQ_Sector_NumberOfStrip ; //radial strip spacing in rad
+  double StripPitchRadial = (QQQ_R_Max-QQQ_R_Min)/QQQ_Radial_NumberOfStrip  ; // ring strip spacing in mm
+  
+  TVector3 Strip_1_1;
+  
+  m_NumberOfDetector++;
+  Strip_1_1=TVector3(0,0,Z);
+  
+  //   Buffer object to fill Position Array
+  vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
+  
+  vector< vector< double > >   OneQQQStripPositionX   ;
+  vector< vector< double > >   OneQQQStripPositionY   ;
+  vector< vector< double > >   OneQQQStripPositionZ   ;
+  
+  TVector3 StripCenter = Strip_1_1;
+  for(int f = 0 ; f < QQQ_Radial_NumberOfStrip ; f++){
+    lineX.clear()   ;
+    lineY.clear()   ;
+    lineZ.clear()   ;
+    
+    for(int b = 0 ; b < QQQ_Sector_NumberOfStrip ; b++){
+      StripCenter = Strip_1_1;
+      StripCenter.SetY(QQQ_R_Max-StripPitchRadial*f);
+      StripCenter.SetZ(Z);
+      StripCenter.RotateZ(Phi+QQQ_Phi_Min+b*StripPitchSector);
+      lineX.push_back( StripCenter.X() );
+      lineY.push_back( StripCenter.Y() );
+      lineZ.push_back( StripCenter.Z() );
+    }
+    
+    OneQQQStripPositionX.push_back(lineX);
+    OneQQQStripPositionY.push_back(lineY);
+    OneQQQStripPositionZ.push_back(lineZ);
+  }
+  m_StripPositionX.push_back( OneQQQStripPositionX ) ;
+  m_StripPositionY.push_back( OneQQQStripPositionY ) ;
+  m_StripPositionZ.push_back( OneQQQStripPositionZ ) ;
+  
+  return;
+}
 
-        m_NumberOfDetector++;
-        Strip_1_1=TVector3(0,0,Z);
+TVector3 TSharcPhysics::GetDetectorNormal( const int i) const
+{
+  /*  TVector3 U =    TVector3 ( GetStripPositionX( DetectorNumber[i] , 24 , 1 ) ,
+   GetStripPositionY( DetectorNumber[i] , 24 , 1 ) ,
+   GetStripPositionZ( DetectorNumber[i] , 24 , 1 ) )
    
-        //   Buffer object to fill Position Array
-        vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
-
-        vector< vector< double > >   OneQQQStripPositionX   ;
-        vector< vector< double > >   OneQQQStripPositionY   ;
-        vector< vector< double > >   OneQQQStripPositionZ   ;
-      
-        TVector3 StripCenter = Strip_1_1;
-        for(int f = 0 ; f < QQQ_Radial_NumberOfStrip ; f++){
-          lineX.clear()   ;
-          lineY.clear()   ;
-          lineZ.clear()   ;
-
-          for(int b = 0 ; b < QQQ_Sector_NumberOfStrip ; b++){
-            StripCenter = Strip_1_1;
-            StripCenter.SetY(QQQ_R_Max-StripPitchRadial*f);
-            StripCenter.SetZ(Z);
-            StripCenter.RotateZ(Phi+QQQ_Phi_Min+b*StripPitchSector);
-            lineX.push_back( StripCenter.X() );
-            lineY.push_back( StripCenter.Y() );
-            lineZ.push_back( StripCenter.Z() );   
-          }
-          
-          OneQQQStripPositionX.push_back(lineX);
-          OneQQQStripPositionY.push_back(lineY);
-          OneQQQStripPositionZ.push_back(lineZ);
-       }
-        m_StripPositionX.push_back( OneQQQStripPositionX ) ;
-        m_StripPositionY.push_back( OneQQQStripPositionY ) ;
-        m_StripPositionZ.push_back( OneQQQStripPositionZ ) ;   
-
-return;
+   -TVector3 ( GetStripPositionX( DetectorNumber[i] , 1 , 1 ) ,
+   GetStripPositionY( DetectorNumber[i] , 1 , 1 ) ,
+   GetStripPositionZ( DetectorNumber[i] , 1 , 1 ) );
+   
+   TVector3 V =    TVector3 ( GetStripPositionX( DetectorNumber[i] , 24 , 48 ) ,
+   GetStripPositionY( DetectorNumber[i] , 24 , 48 ) ,
+   GetStripPositionZ( DetectorNumber[i] , 24 , 48 ) )
+   
+   -TVector3 ( GetStripPositionX( DetectorNumber[i] , 24 , 1 ) ,
+   GetStripPositionY( DetectorNumber[i] , 24 , 1 ) ,
+   GetStripPositionZ( DetectorNumber[i] , 24 , 1 ) );
+   
+   TVector3 Normal = U.Cross(V);
+   
+   return(Normal.Unit()) ;*/
+  
+  return (TVector3(0,0,i));
+  
+}
+
+TVector3 TSharcPhysics::GetPositionOfInteraction(const int i) const
+{
+  TVector3 Position = TVector3 (   GetStripPositionX( DetectorNumber[i] , Strip_Front[i] , Strip_Back[i] )    ,
+                                GetStripPositionY( DetectorNumber[i] , Strip_Front[i] , Strip_Back[i] )    ,
+                                GetStripPositionZ( DetectorNumber[i] , Strip_Front[i] , Strip_Back[i] )    ) ;
+  
+  return(Position) ;
+  
 }
 
-TVector3 TSharcPhysics::GetDetectorNormal( const int i) const 
-   {
-    /*  TVector3 U =    TVector3 ( GetStripPositionX( DetectorNumber[i] , 24 , 1 ) ,
-                                 GetStripPositionY( DetectorNumber[i] , 24 , 1 ) ,
-                                 GetStripPositionZ( DetectorNumber[i] , 24 , 1 ) )
-                           
-                     -TVector3 ( GetStripPositionX( DetectorNumber[i] , 1 , 1 ) ,
-                                 GetStripPositionY( DetectorNumber[i] , 1 , 1 ) ,
-                                 GetStripPositionZ( DetectorNumber[i] , 1 , 1 ) );
-                        
-      TVector3 V =    TVector3 ( GetStripPositionX( DetectorNumber[i] , 24 , 48 ) ,
-                                 GetStripPositionY( DetectorNumber[i] , 24 , 48 ) ,
-                                 GetStripPositionZ( DetectorNumber[i] , 24 , 48 ) )
-                           
-                     -TVector3 ( GetStripPositionX( DetectorNumber[i] , 24 , 1 ) ,
-                                 GetStripPositionY( DetectorNumber[i] , 24 , 1 ) ,
-                                 GetStripPositionZ( DetectorNumber[i] , 24 , 1 ) );
-                           
-      TVector3 Normal = U.Cross(V);
-      
-      return(Normal.Unit()) ;*/
-   }   
-
-TVector3 TSharcPhysics::GetPositionOfInteraction(const int i) const 
-   {
-      TVector3 Position = TVector3 (   GetStripPositionX( DetectorNumber[i] , Strip_Front[i] , Strip_Back[i] )    ,
-                                       GetStripPositionY( DetectorNumber[i] , Strip_Front[i] , Strip_Back[i] )    ,
-                                       GetStripPositionZ( DetectorNumber[i] , Strip_Front[i] , Strip_Back[i] )    ) ;
-      
-      return(Position) ;   
-   
-   }
- 
 void TSharcPhysics::InitializeStandardParameter()
-   {
-      //   Enable all channel
-      vector< bool > ChannelStatus;
-      m_FrontChannelStatus.clear()    ;
-      m_BackChannelStatus.clear()    ;
-      m_PADChannelStatus.clear() ;
+{
+  //   Enable all channel
+  vector< bool > ChannelStatus;
+  m_FrontChannelStatus.clear()    ;
+  m_BackChannelStatus.clear()    ;
+  m_PADChannelStatus.clear() ;
+  
+  ChannelStatus.resize(24,true);
+  for(int i = 0 ; i < m_NumberOfDetector ; ++i)
+    {
+    m_FrontChannelStatus[i] = ChannelStatus;
+    }
+  
+  ChannelStatus.resize(48,true);
+  for(int i = 0 ; i < m_NumberOfDetector ; ++i)
+    {
+    m_BackChannelStatus[i] = ChannelStatus;
+    }
+  
+  ChannelStatus.resize(1,true);
+  for(int i = 0 ; i < m_NumberOfDetector ; ++i)
+    {
+    m_PADChannelStatus[i] = ChannelStatus;
     
-      ChannelStatus.resize(24,true);
-      for(int i = 0 ; i < m_NumberOfDetector ; ++i)      
-         {
-            m_FrontChannelStatus[i] = ChannelStatus;
-         }
-      
-      ChannelStatus.resize(48,true);
-      for(int i = 0 ; i < m_NumberOfDetector ; ++i)      
-         {
-            m_BackChannelStatus[i] = ChannelStatus;
-         }
-      
-      ChannelStatus.resize(1,true);
-      for(int i = 0 ; i < m_NumberOfDetector ; ++i)      
-         {
-            m_PADChannelStatus[i] = ChannelStatus;
-           
-         }
-
-      m_MaximumStripMultiplicityAllowed = m_NumberOfDetector   ;
-      
-      return;
-   }   
-            
+    }
+  
+  m_MaximumStripMultiplicityAllowed = m_NumberOfDetector   ;
+  
+  return;
+}
+
 
 ///////////////////////////////////////////////////////////////////////////
 namespace Sharc_LOCAL
-   {
-      
-      //   tranform an integer to a string
-      string itoa(unsigned int value)
-      {
-         char buffer [33];
-         sprintf(buffer,"%d",value);
-         return buffer;
-      }
-
-      //   DSSD
-      //   Front
-      double fStrip_Front_E(const TSharcData* m_EventData , const int i)
-         {
-            return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetFront_DetectorNbr(i) ) + "_STRIP_FRONT" + itoa( m_EventData->GetFront_StripNbr(i) ) + "_E",   
-                                                                                                      m_EventData->GetFront_Energy(i) );
-         }
-         
-      double fStrip_Front_T(const TSharcData* m_EventData , const int i)
-         {
-            return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetFront_DetectorNbr(i) ) + "_STRIP_FRONT" + itoa( m_EventData->GetFront_StripNbr(i) ) +"_T",   
-                                                                                                      m_EventData->GetFront_TimeCFD(i) );
-         }
-      
-      //   Back 
-      double fStrip_Back_E(const TSharcData* m_EventData , const int i)
-         {
-            return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetBack_DetectorNbr(i) ) + "_STRIP_BACK" + itoa( m_EventData->GetBack_StripNbr(i) ) +"_E",   
-                                                                                                      m_EventData->GetBack_Energy(i) );
-         }
-         
-      double fStrip_Back_T(const TSharcData* m_EventData , const int i)
-         {
-            return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetBack_DetectorNbr(i) ) + "_STRIP_BACK" + itoa( m_EventData->GetBack_StripNbr(i) ) +"_T",   
-                                                                                                      m_EventData->GetFront_TimeCFD(i) );
-         }
-         
-         
-      //   PAD
-      double fPAD_E(const TSharcData* m_EventData , const int i)
-         {
-            return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetPAD_DetectorNbr(i) ) + "_PAD" +"_E",   
-                                                                                                      m_EventData->GetPAD_Energy(i) );
-         }
-         
-      double fPAD_T(const TSharcData* m_EventData , const int i)
-         {
-            return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetPAD_DetectorNbr(i) ) + "_PAD" +"_T",   
-                                                                                                      m_EventData->GetPAD_TimeCFD(i) );
-         }
-
-   }
+{
+  
+  //   tranform an integer to a string
+  string itoa(unsigned int value)
+  {
+  char buffer [33];
+  sprintf(buffer,"%d",value);
+  return buffer;
+  }
+  
+  //   DSSD
+  //   Front
+  double fStrip_Front_E(const TSharcData* m_EventData , const int i)
+  {
+  return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetFront_DetectorNbr(i) ) + "_STRIP_FRONT" + itoa( m_EventData->GetFront_StripNbr(i) ) + "_E",
+                                                             m_EventData->GetFront_Energy(i) );
+  }
+  
+  double fStrip_Front_T(const TSharcData* m_EventData , const int i)
+  {
+  return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetFront_DetectorNbr(i) ) + "_STRIP_FRONT" + itoa( m_EventData->GetFront_StripNbr(i) ) +"_T",
+                                                             m_EventData->GetFront_TimeCFD(i) );
+  }
+  
+  //   Back
+  double fStrip_Back_E(const TSharcData* m_EventData , const int i)
+  {
+  return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetBack_DetectorNbr(i) ) + "_STRIP_BACK" + itoa( m_EventData->GetBack_StripNbr(i) ) +"_E",
+                                                             m_EventData->GetBack_Energy(i) );
+  }
+  
+  double fStrip_Back_T(const TSharcData* m_EventData , const int i)
+  {
+  return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetBack_DetectorNbr(i) ) + "_STRIP_BACK" + itoa( m_EventData->GetBack_StripNbr(i) ) +"_T",
+                                                             m_EventData->GetFront_TimeCFD(i) );
+  }
+  
+  
+  //   PAD
+  double fPAD_E(const TSharcData* m_EventData , const int i)
+  {
+  return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetPAD_DetectorNbr(i) ) + "_PAD" +"_E",
+                                                             m_EventData->GetPAD_Energy(i) );
+  }
+  
+  double fPAD_T(const TSharcData* m_EventData , const int i)
+  {
+  return CalibrationManager::getInstance()->ApplyCalibration(   "SHARC/D" + itoa( m_EventData->GetPAD_DetectorNbr(i) ) + "_PAD" +"_T",
+                                                             m_EventData->GetPAD_TimeCFD(i) );
+  }
+  
+}