From cfb205b05d3f2e9bbdf5319b2a95e30fc4e2fab1 Mon Sep 17 00:00:00 2001
From: Peter Hansen <phansen@nbi.dk>
Date: Mon, 23 Jan 2017 20:54:20 +0100
Subject: [PATCH] remove cov defects (TRT_ConditionsServices-01-01-12)

        * Tagging TRT_ConditionsServices-01-01-12.
	* Coverity defects 105413,105414,105415,105416,105417,105418,12028,11498,11499
---
 .../src/TRT_AlignDbSvc.cxx                    | 38 ++++++++++++-------
 .../src/TRT_HWMappingSvc.cxx                  | 38 +++++++++++++------
 2 files changed, 51 insertions(+), 25 deletions(-)

diff --git a/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_AlignDbSvc.cxx b/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_AlignDbSvc.cxx
index a1bbcd9ae47..b9f088a5c43 100755
--- a/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_AlignDbSvc.cxx
+++ b/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_AlignDbSvc.cxx
@@ -770,20 +770,20 @@ StatusCode TRT_AlignDbSvc::setAlignTransform(Identifier ident, Amg::Transform3D
     if(setAlignTransformL1(ident,trans).isFailure()){
       msg(MSG::FATAL)<<"Failed to set align Transform L1" << endmsg;
       return StatusCode::FAILURE;
-      break;
     }
+    break;
   case 2:
     if(setAlignTransformL2(ident,trans).isFailure()){
       msg(MSG::FATAL)<<"Failed to set align Transform L2" << endmsg;
       return StatusCode::FAILURE;
-      break;
     }
+    break;
   case 3:
     if(setAlignTransformL3(ident,trans).isFailure()){
-      msg(MSG::FATAL)<<"Failed to set align Transform L2" << endmsg;
+      msg(MSG::FATAL)<<"Failed to set align Transform L3" << endmsg;
       return StatusCode::FAILURE;
-      break;
     }
+    break;
   }
 
   return StatusCode::SUCCESS;
@@ -1618,6 +1618,8 @@ StatusCode TRT_AlignDbSvc::writeGlobalFolderFile( const std::string file)
 
 
 
+
+
 StatusCode TRT_AlignDbSvc::tweakGlobalFolder(Identifier ident, Amg::Transform3D trans ) {
 
   // find transform key, then set appropriate transform
@@ -1625,8 +1627,9 @@ StatusCode TRT_AlignDbSvc::tweakGlobalFolder(Identifier ident, Amg::Transform3D
   CondAttrListCollection* atrlistcol2=0;
   bool result = false;
   std::string key="/TRT/AlignL1/TRT";
+  msg(MSG::DEBUG) << " Identifier is valid: "<< ident.is_valid() << endmsg;
   int bec=m_trtid->barrel_ec(ident);
-  const unsigned int DBident=bec*1000;
+  const unsigned int DBident=1000+bec*100;
   // so far not a very fancy DB identifier, but seems elaborate enough for this simple structure
 
   if (StatusCode::SUCCESS==m_detStore->retrieve(atrlistcol1,key)) {
@@ -1638,7 +1641,10 @@ StatusCode TRT_AlignDbSvc::tweakGlobalFolder(Identifier ident, Amg::Transform3D
         const coral::AttributeList& atrlist=citr->second;
 	coral::AttributeList& atrlist2  = const_cast<coral::AttributeList&>(atrlist);
 
-        if(citr->first!=DBident) continue;
+        if(citr->first!=DBident){
+          msg(MSG::DEBUG) << "tweakGlobalFolder fails due to identifier mismatch" << endmsg;
+          continue;
+	}
         else {
           msg(MSG::DEBUG) << "Tweak Old global DB -- channel: " << citr->first
 			  << " ,bec: "    << atrlist2["bec"].data<int>()
@@ -1659,19 +1665,23 @@ StatusCode TRT_AlignDbSvc::tweakGlobalFolder(Identifier ident, Amg::Transform3D
 	  HepGeom::Transform3D oldtransform(oldrotation, oldtranslation);
 	  	  
           // get the new transform
-	  //HepGeom::Transform3D newtrans = Amg::EigenTransformToCLHEP(trans)*oldtrans;
-	  Amg::Transform3D newtrans = trans*Amg::CLHEPTransformToEigen(oldtransform);
+	  HepGeom::Transform3D newtrans = Amg::EigenTransformToCLHEP(trans)*oldtransform;
+	  Amg::Transform3D newtransAMG = trans*Amg::CLHEPTransformToEigen(oldtransform);
 
           // Extract the values we need to write to DB
-	  Amg::Vector3D shift=newtrans.translation();
-	  Amg::Vector3D eulerangles = newtrans.rotation().eulerAngles(2,0,2) ;                     
-	  //CLHEP::HepRotation rot=newtrans.getRotation();                                                                                           
+	  Amg::Vector3D shift=newtransAMG.translation();
+	  CLHEP::HepRotation rot=newtrans.getRotation();
+	  Amg::Vector3D eulerangles;
+          eulerangles[0] = rot.getPhi();
+          eulerangles[1] = rot.getTheta();
+          eulerangles[2] = rot.getPsi();	  
+
           atrlist2["Tx"].data<float>() = shift.x();
           atrlist2["Ty"].data<float>() = shift.y();
           atrlist2["Tz"].data<float>() = shift.z();
-          atrlist2["phi"].data<float>()   = eulerangles[0]/CLHEP::mrad ;
-          atrlist2["theta"].data<float>() = eulerangles[1]/CLHEP::mrad ;
-          atrlist2["psi"].data<float>()   = eulerangles[2]/CLHEP::mrad ;
+          atrlist2["phi"].data<float>()   = eulerangles[0] ;
+          atrlist2["theta"].data<float>() = eulerangles[1] ;
+          atrlist2["psi"].data<float>()   = eulerangles[2] ;
 
 	  result = true;
 	  msg(MSG::DEBUG) << "Tweak New global DB -- channel: " << citr->first
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_HWMappingSvc.cxx b/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_HWMappingSvc.cxx
index e1c208c91ca..c083e2590cd 100644
--- a/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_HWMappingSvc.cxx
+++ b/InnerDetector/InDetConditions/TRT_ConditionsServices/src/TRT_HWMappingSvc.cxx
@@ -40,6 +40,7 @@ TRT_HWMappingSvc::TRT_HWMappingSvc( const std::string& name,
   m_Barrel_HV_CoolChanNums(0),
   m_EndcapA_HV_CoolChanNums(0),
   m_EndcapC_HV_CoolChanNums(0),
+  m_TRT_ID_Helper(0),
   m_TRTStrawNeighbourSvc("TRT_StrawNeighbourSvc",name)
 {
   // Get properties from job options
@@ -129,7 +130,7 @@ std::string TRT_HWMappingSvc::get_HV_CoolChanName( const Identifier ident ) {
     int padNum = get_HV_BarrelPadNum( ident );
     int hashedPad = hashThisBarrelPad( phi_module, layer_or_wheel, padNum );
     if ( m_Barrel_HV_CoolChanNames ) {
-      if ( hashedPad >= (int)m_Barrel_HV_CoolChanNames->size() ) {
+      if ( hashedPad >= (int)m_Barrel_HV_CoolChanNames->size() || hashedPad<0) {
 	msg(MSG::WARNING) << "channel request for invalid barrel HV pad." << endmsg;
 	return "";
       } else chanName = m_Barrel_HV_CoolChanNames->at(hashedPad);
@@ -140,7 +141,7 @@ std::string TRT_HWMappingSvc::get_HV_CoolChanName( const Identifier ident ) {
     int cellNum = get_HV_EndcapCellNum( ident );
     int hashedCell = hashThisEndcapCell( phi_module, layer_or_wheel, fourPlaneNum, cellNum );
     if ( m_EndcapA_HV_CoolChanNames ) {
-      if ( hashedCell >= (int)m_EndcapA_HV_CoolChanNames->size() ) {
+      if ( hashedCell >= (int)m_EndcapA_HV_CoolChanNames->size() || hashedCell<0 ) {
 	msg(MSG::WARNING) << "channel request for invalid endcap A HV pad." << endmsg;
 	return "";
       } else chanName = m_EndcapA_HV_CoolChanNames->at(hashedCell);
@@ -151,7 +152,7 @@ std::string TRT_HWMappingSvc::get_HV_CoolChanName( const Identifier ident ) {
     int cellNum = get_HV_EndcapCellNum( ident );
     int hashedCell = hashThisEndcapCell( phi_module, layer_or_wheel, fourPlaneNum, cellNum );
     if ( m_EndcapC_HV_CoolChanNames ) {
-      if ( hashedCell >= (int)m_EndcapC_HV_CoolChanNames->size() ) {
+      if ( hashedCell >= (int)m_EndcapC_HV_CoolChanNames->size() || hashedCell<0) {
 	msg(MSG::WARNING) << "channel request for invalid endcap C HV pad." << endmsg;
 	return "";
       } else chanName = m_EndcapC_HV_CoolChanNames->at(hashedCell);
@@ -183,7 +184,7 @@ int TRT_HWMappingSvc::get_HV_CoolChanNum( const Identifier ident ) {
     int padNum = get_HV_BarrelPadNum( ident );
     int hashedPad = hashThisBarrelPad( phi_module, layer_or_wheel, padNum );
     if ( m_Barrel_HV_CoolChanNums ) {
-      if ( hashedPad >= (int)m_Barrel_HV_CoolChanNums->size() ) {
+      if ( hashedPad >= (int)m_Barrel_HV_CoolChanNums->size() || hashedPad<0 ) {
 	msg(MSG::WARNING) << "channel number request for invalid barrel HV pad." << endmsg;
 	return -1;
       } else chanNum = m_Barrel_HV_CoolChanNums->at(hashedPad);
@@ -194,7 +195,7 @@ int TRT_HWMappingSvc::get_HV_CoolChanNum( const Identifier ident ) {
     int cellNum = get_HV_EndcapCellNum( ident );
     int hashedCell = hashThisEndcapCell( phi_module, layer_or_wheel, fourPlaneNum, cellNum );
     if ( m_EndcapA_HV_CoolChanNums ) {
-      if ( hashedCell >= (int)m_EndcapA_HV_CoolChanNums->size() ) {
+      if ( hashedCell >= (int)m_EndcapA_HV_CoolChanNums->size() || hashedCell<0) {
 	msg(MSG::WARNING) << "channel number request for invalid endcap A HV cell." << endmsg;
 	return -1;
       } else chanNum = m_EndcapA_HV_CoolChanNums->at(hashedCell);
@@ -205,7 +206,7 @@ int TRT_HWMappingSvc::get_HV_CoolChanNum( const Identifier ident ) {
     int cellNum = get_HV_EndcapCellNum( ident );
     int hashedCell = hashThisEndcapCell( phi_module, layer_or_wheel, fourPlaneNum, cellNum );
     if ( m_EndcapC_HV_CoolChanNums ) {
-      if ( hashedCell >= (int)m_EndcapC_HV_CoolChanNums->size() ) {
+      if ( hashedCell >= (int)m_EndcapC_HV_CoolChanNums->size() || hashedCell<0) {
 	msg(MSG::WARNING) << "channel number request for invalid endcap C HV cell." << endmsg;
 	return -1;
       } else chanNum = m_EndcapC_HV_CoolChanNums->at(hashedCell);
@@ -453,7 +454,11 @@ StatusCode TRT_HWMappingSvc::build_BarrelHVLinePadMap() {
 
       // Add this channel into the map vector at the appropriate position
       // (hashed pad gives index in map vector)
-      m_Barrel_HV_CoolChanNames->at(hashedPad) = chanName;
+      if ( hashedPad >= (int)m_Barrel_HV_CoolChanNames->size() || hashedPad<0) {
+	msg(MSG::WARNING) << "channel request for invalid barrel HV pad." << endmsg;
+      }else{
+        m_Barrel_HV_CoolChanNames->at(hashedPad) = chanName;
+      }
     }
 
 
@@ -615,7 +620,11 @@ StatusCode TRT_HWMappingSvc::build_BarrelHVLinePadMap() {
 	std::vector<int>::const_iterator padItr;
 	for ( padItr = padVec->begin(); padItr != padVec->end(); ++padItr ) {
 	  int hashedPad = hashThisBarrelPad( sector, module, *padItr );
-	  m_Barrel_HV_CoolChanNames->at(hashedPad) = chanName.str();
+          if ( hashedPad >= (int)m_Barrel_HV_CoolChanNames->size() || hashedPad<0) {
+	     msg(MSG::WARNING) << "channel request for invalid barrel HV pad." << endmsg;
+          }else{
+  	     m_Barrel_HV_CoolChanNames->at(hashedPad) = chanName.str();
+          }
 	}
       }  
     }
@@ -710,8 +719,12 @@ StatusCode TRT_HWMappingSvc::build_EndcapHVLinePadMaps() {
 	// Add them to the maps
 	for ( int cellNum = 0; cellNum < 3; ++cellNum ) {
 	  int hashedCell = hashThisEndcapCell( sector, wheel, layer, cellNum );
-	  m_EndcapA_HV_CoolChanNames->at(hashedCell) = lineNameA.str();
-	  m_EndcapC_HV_CoolChanNames->at(hashedCell) = lineNameC.str();
+          if ( hashedCell >= (int)m_EndcapA_HV_CoolChanNames->size() || hashedCell<0) {
+	    msg(MSG::WARNING) << "channel request for invalid endcap HV pad." << endmsg;
+          }else{
+	    m_EndcapA_HV_CoolChanNames->at(hashedCell) = lineNameA.str();
+	    m_EndcapC_HV_CoolChanNames->at(hashedCell) = lineNameC.str();
+	  }
 	}
       }
     }
@@ -719,8 +732,11 @@ StatusCode TRT_HWMappingSvc::build_EndcapHVLinePadMaps() {
 
   // Apply corrections to the map
   int hashedCellToFix = hashThisEndcapCell( 5, 12, 0, 2 );
+  if ( hashedCellToFix >= (int)m_EndcapA_HV_CoolChanNames->size() || hashedCellToFix<0) {
+	    msg(MSG::WARNING) << "channel request for invalid endcap HV pad." << endmsg;
+  }else{
   m_EndcapA_HV_CoolChanNames->at(hashedCellToFix) = "HVA_S7S8_WB7_B_OutputVoltage";
-
+  }
   msg(MSG::INFO) << "Endcap HV-line/pad maps successfully built - ECA: "
        << m_EndcapA_HV_CoolChanNames->size() << " channels; ECC: "
        << m_EndcapC_HV_CoolChanNames->size() << " channels." << endmsg;
-- 
GitLab