diff --git a/NPLib/Tiara/TTiaraBarrelPhysics.cxx b/NPLib/Tiara/TTiaraBarrelPhysics.cxx index ab3322589cbef1e22b2a6b57e96b37ca071b6619..828ae0bcdafdb530b52bbb6a1b7621b1c7831f40 100644 --- a/NPLib/Tiara/TTiaraBarrelPhysics.cxx +++ b/NPLib/Tiara/TTiaraBarrelPhysics.cxx @@ -66,10 +66,10 @@ void TTiaraBarrelPhysics::BuildSimplePhysicalEvent(){ /////////////////////////////////////////////////////////////////////////// void TTiaraBarrelPhysics::BuildPhysicalEvent(){ - PreTreat(); + PreTreat(); - /* + /* if( CheckEvent() == 1 ){ vector< TVector2 > couple = Match_Ring_Sector() ; EventMultiplicity = couple.size(); @@ -130,31 +130,29 @@ void TTiaraBarrelPhysics::PreTreat(){ // Match Stick Calibration // Gain Calibration - - unsigned int size = m_EventData-> GetFrontUpstreamEMult(); - for(unsigned int i = 0 ; i < size; i++){ - double E = Cal_Strip_Upstream_E(i) ; - cout << m_EventData->GetFrontUpstreamEEnergy(i) << " " << E << endl ; - if( m_EventData->GetFrontUpstreamEEnergy(i) > m_Strip_E_RAW_Threshold - && E > m_Strip_E_Threshold){ - m_PreTreatedData->SetFrontUpstreamEEnergy(E); - m_PreTreatedData->SetFrontUpstreamEDetectorNbr(m_EventData->GetFrontUpstreamEDetectorNbr(i)); - m_PreTreatedData->SetFrontDownstreamEStripNbr(m_EventData->GetFrontDownstreamEStripNbr(i)); - } - } - - size = m_EventData-> GetFrontDownstreamEMult(); - for(unsigned int i = 0 ; i < size; i++){ - double E = Cal_Strip_Downstream_E(i) ; - if( m_EventData->GetFrontDownstreamEEnergy(i) > m_Strip_E_RAW_Threshold - && E > m_Strip_E_Threshold){ - m_PreTreatedData->SetFrontDownstreamEEnergy(E); - m_PreTreatedData->SetFrontDownstreamEDetectorNbr(m_EventData->GetFrontDownstreamEDetectorNbr(i)); - m_PreTreatedData->SetFrontDownstreamEStripNbr(m_EventData->GetFrontDownstreamEStripNbr(i)); + + unsigned int sizeU = m_EventData-> GetFrontUpstreamEMult(); + unsigned int sizeD = m_EventData-> GetFrontDownstreamEMult(); + + for(unsigned int i = 0 ; i < sizeU ; i++){ + for(unsigned int j = 0 ; j < sizeD ; j++){ + double EU = Cal_Strip_Upstream_E(i) ; + double ED = Cal_Strip_Downstream_E(j) ; + if(EU>0 && ED>0) + if(m_EventData->GetFrontUpstreamEDetectorNbr(i) == m_EventData->GetFrontDownstreamEDetectorNbr(j) ) + if(m_EventData->GetFrontUpstreamEStripNbr(i) == m_EventData->GetFrontDownstreamEStripNbr(j)){ + Strip_E.push_back(EU+ED); + + double POS =CalibrationManager::getInstance()->ApplyResistivePositionCalibration("TIARABARREL/B"+itoa(m_EventData->GetFrontUpstreamEDetectorNbr(i))+"_STRIP"+itoa(m_EventData->GetFrontUpstreamEDetectorNbr(i))+"_POS",(ED-EU)/(EU+ED)); + + Strip_Pos.push_back(POS); + Strip_N.push_back(m_EventData->GetFrontUpstreamEStripNbr(i)); + DetectorNumber.push_back(m_EventData->GetFrontUpstreamEDetectorNbr(i)); + } } } - // Position + // Ballistic Deficit correction } @@ -479,26 +477,15 @@ map< vector<TString>,TH1* > TTiaraBarrelPhysics::GetSpectra() { /////////////////////////////////////////////////////////////////////////// void TTiaraBarrelPhysics::AddParameterToCalibrationManager(){ CalibrationManager* Cal = CalibrationManager::getInstance(); - - // E and T for(int i = 0 ; i < m_NumberOfDetector ; ++i){ for( int j = 0 ; j < 4 ; ++j){ - Cal->AddParameter("TIARABARREL_B", itoa(i+1)+"_UPSTREAM"+itoa(j+1)+"_E","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_E") ; - Cal->AddParameter("TIARABARREL_B", itoa(i+1)+"_UPSTREAM"+itoa(j+1)+"_T","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_T") ; - Cal->AddParameter("TIARABARREL_B", itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_E","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_E") ; - Cal->AddParameter("TIARABARREL_B", itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_T","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_T") ; - } - } + Cal->AddParameter("TIARABARREL","B"+itoa(i+1)+"_UPSTREAM"+itoa(j+1)+"_E","TIARABARREL_B"+itoa(i+1)+"_UPSTREAM"+itoa(j+1)+"_E") ; + Cal->AddParameter("TIARABARREL","B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_E","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_E") ; - // POS - for(int i = 0 ; i < m_NumberOfDetector ; ++i){ - for( int j = 0 ; j < 4 ; ++j){ - Cal->AddParameter("TIARABARREL_B", itoa(i+1)+"_UPSTREAM"+itoa(j+1)+"_POS","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_POS") ; - Cal->AddParameter("TIARABARREL_B", itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_POS","TIARABARREL_B"+itoa(i+1)+"_DOWNSTREAM"+itoa(j+1)+"_POS") ; + Cal->AddParameter("TIARABARREL","B"+itoa(i+1)+"_STRIP"+itoa(j+1)+"_POS","TIARABARREL_B"+itoa(i+1)+"_STRIP"+itoa(j+1)+"_POS") ; } } - return; } @@ -632,12 +619,12 @@ string TTiaraBarrelPhysics::itoa(unsigned int value){ } /////////////////////////////////////////////////////////////////////////////// double TTiaraBarrelPhysics::Cal_Strip_Upstream_E(const int i){ - return CalibrationManager::getInstance()->ApplyCalibration( "TIARABARREL/B" + itoa( m_EventData->GetFrontUpstreamEDetectorNbr(i) ) + "_UPSTREAM" + itoa( m_EventData->GetFrontUpstreamEStripNbr(i) ) + "_E", + return CalibrationManager::getInstance()->ApplyCalibration("TIARABARREL/B" + itoa( m_EventData->GetFrontUpstreamEDetectorNbr(i) ) + "_UPSTREAM" + itoa( m_EventData->GetFrontUpstreamEStripNbr(i) ) + "_E", m_EventData->GetFrontUpstreamEEnergy(i) ); } /////////////////////////////////////////////////////////////////////////////// double TTiaraBarrelPhysics::Cal_Strip_Downstream_E(const int i){ - return CalibrationManager::getInstance()->ApplyCalibration( "TIARABARREL/B" + itoa( m_EventData->GetFrontDownstreamEDetectorNbr(i) ) + "_DOWNSTREAM" + itoa( m_EventData->GetFrontDownstreamEStripNbr(i) ) + "_E", + return CalibrationManager::getInstance()->ApplyCalibration("TIARABARREL/B" + itoa( m_EventData->GetFrontDownstreamEDetectorNbr(i) ) + "_DOWNSTREAM" + itoa( m_EventData->GetFrontDownstreamEStripNbr(i) ) + "_E", m_EventData->GetFrontDownstreamEEnergy(i) ); } diff --git a/NPLib/Tiara/TTiaraBarrelSpectra.cxx b/NPLib/Tiara/TTiaraBarrelSpectra.cxx index e4a3ce93ab95350eb3d449a92f3c621df16bac56..40b1c26b11dfe65418074072e88135179dfa2f79 100644 --- a/NPLib/Tiara/TTiaraBarrelSpectra.cxx +++ b/NPLib/Tiara/TTiaraBarrelSpectra.cxx @@ -120,6 +120,17 @@ void TTiaraBarrelSpectra::InitPreTreatedSpectra(){ //////////////////////////////////////////////////////////////////////////////// void TTiaraBarrelSpectra::InitPhysicsSpectra(){ +string BaseFamily = "/TIARA/BARREL/PHY/"; +string name ; + //// E POS //// + // Inner Barrel + for(unsigned int i = 0 ; i < fNumberOfDetector ; i++){ + for(unsigned int j = 0 ; j < fInnerBarrelStrip;j++){ + name = Form("IB%d_EPOS%d_CAL",i+1,j+1); + AddHisto2D(name, name,10000,-10,10,100,0,10,BaseFamily); + } + } + } //////////////////////////////////////////////////////////////////////////////// @@ -209,22 +220,20 @@ void TTiaraBarrelSpectra::FillRawSpectra(TTiaraBarrelData* RawData){ //////////////////////////////////////////////////////////////////////////////// void TTiaraBarrelSpectra::FillPreTreatedSpectra(TTiaraBarrelData* PreTreatedData){ -/*string BaseFamily = "/TIARA/BARREL/CAL/"; -string name ; - //// E POS //// - // Inner Barrel - for(unsigned int i = 0 ; i < fNumberOfDetector ; i++){ - for(unsigned int j = 0 ; j < fInnerBarrelStrip;j++){ - name = Form("IB%d_EPOS%d_CAL",i+1,j+1); - AddHisto2D(name, name,100,0,1,100,0,50,BaseFamily+"POS"); - } - } - -*/ } //////////////////////////////////////////////////////////////////////////////// void TTiaraBarrelSpectra::FillPhysicsSpectra(TTiaraBarrelPhysics* Physics){ +string family = "/TIARA/BARREL/PHY/"; +string name ; + //// E POS //// + // Inner Barrel + unsigned int size = Physics->Strip_E.size(); + for(unsigned int i = 0 ; i < Physics->Strip_E.size() ; i++){ + name = Form("IB%d_EPOS%d_CAL",Physics->DetectorNumber[i],Physics->Strip_N[i]); + GetHisto(family,name) + ->Fill(Physics->Strip_Pos[i],Physics->Strip_E[i]); + } } //////////////////////////////////////////////////////////////////////////////// diff --git a/NPLib/Tools/CalibrationManager.cxx b/NPLib/Tools/CalibrationManager.cxx index 0b96798ee9bfdd545a986eeab08adaf0d0da630d..a03478b2a61c9ae7b8be73053c8fb64a4997fd1e 100644 --- a/NPLib/Tools/CalibrationManager.cxx +++ b/NPLib/Tools/CalibrationManager.cxx @@ -62,8 +62,7 @@ CalibrationManager::CalibrationManager(string configFileName) return; } - else - { + else { cout << "Reading list of file from :" << configFileName << endl; while (!inputConfigFile.eof()) { getline(inputConfigFile, lineBuffer); @@ -175,16 +174,14 @@ void CalibrationManager::LoadParameterFromFile() // Search word in the token list it=fToken.find(DataBuffer); - - // if the word is find, values are read + // if the word is find, values are read if( it!=fToken.end() ) - { + { vector<double> Coeff ; - while( !theLine.eof() ) - { + while( !theLine.eof() ){ theLine >> DataBuffer ; Coeff.push_back( atof(DataBuffer.c_str()) ) ; - } - + } + // Check this parameter is not already define if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) cout << "WARNING: Parameter " << it->second << " Already found. It will be rewritted " << endl; @@ -214,9 +211,10 @@ double CalibrationManager::ApplyCalibration(const string& ParameterPath , const // If the find methods return the end iterator it's mean the parameter was not found if(it == fCalibrationCoeff.end() ) { - /* cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ; + /* cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ; cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE " << endl ; - cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;*/ + cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl; +exit(1); */ return RawValue ; } @@ -238,6 +236,38 @@ double CalibrationManager::ApplyCalibration(const string& ParameterPath , const } +////////////////////////////////////////////////////////////////// +double CalibrationManager::ApplyResistivePositionCalibration(const string& ParameterPath , const double& DeltaRawValue){ + map< string , vector<double> >::iterator it ; + + // Find the good parameter in the Map + // Using Find method of stl is the fastest way + it = fCalibrationCoeff.find(ParameterPath) ; + + // If the find methods return the end iterator it's mean the parameter was not found + if(it == fCalibrationCoeff.end() ) + { + /* cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ; + cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE " << endl ; + cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl; +exit(1); */ + + return DeltaRawValue ; + } + + // Else we take the second part of the element (first is index, ie: parameter path) + // Second is the vector of Coeff + vector<double> Coeff = it->second ; + + // Check that the number of coeff is ok + if(Coeff.size()!=2) return DeltaRawValue ; + + double CalibratedValue = (DeltaRawValue-Coeff[0])/(Coeff[1]-Coeff[0]) ; + return CalibratedValue ; + + } + + ////////////////////////////////////////////////////////////////// bool CalibrationManager::ApplyThreshold(const string& ParameterPath, const double& RawValue) { diff --git a/NPLib/Tools/CalibrationManager.h b/NPLib/Tools/CalibrationManager.h index 02b82e75843d8deb51d573b33c979e4c72f500d8..df2c0a6052da7b68523db215e10a9fcaf8576587 100644 --- a/NPLib/Tools/CalibrationManager.h +++ b/NPLib/Tools/CalibrationManager.h @@ -59,12 +59,9 @@ class CalibrationManager // call like : myCalibrationManager->ApplyCalibration( "MUST2/Telescope5_Si_X38_E" , RawEnergy ) // return the Calibrated value double ApplyCalibration(const string& ParameterPath , const double& RawValue); - + double ApplyResistivePositionCalibration(const string& ParameterPath , const double& RawValue); bool ApplyThreshold(const string& ParameterPath, const double& RawValue); - double GetPedestal(const string& ParameterPath); - - public: // To be called after initialisation // Loop over the file list and catch the file used for calibration