From 0d9b72c1a0eae8ce7ad48c43fb1d08245163c75e Mon Sep 17 00:00:00 2001 From: matta <matta@npt> Date: Fri, 8 Feb 2013 17:01:34 +0000 Subject: [PATCH] * Remove warning at compilation NPL --- NPLib/Sharc/TSharcPhysics.cxx | 1289 +++++++++++++++++---------------- 1 file changed, 646 insertions(+), 643 deletions(-) diff --git a/NPLib/Sharc/TSharcPhysics.cxx b/NPLib/Sharc/TSharcPhysics.cxx index 7d5e9a854..2d3ead7d3 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) ); + } + +} -- GitLab