From 5dd67c5faa5e4ce64d7721939aa056b551f05e78 Mon Sep 17 00:00:00 2001
From: "Yohei Yamaguchi (TIT)" <yoyamagu@lxatut26.cern.ch>
Date: Wed, 19 Dec 2018 03:52:00 +0100
Subject: [PATCH] add dynamic variables for monitoring L2SA

---
 .../TrigL2MuonSA/TrigL2MuonSA/CscData.h               |  1 +
 .../TrigL2MuonSA/src/CscDataPreparator.cxx            |  3 ++-
 .../TrigL2MuonSA/src/MuFastSteering.cxx               |  8 ++++++++
 .../TriggerCommon/TrigEDMConfig/python/TriggerEDM.py  | 11 ++++++++---
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/CscData.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/CscData.h
index ec860123c0a2..839b38c447e4 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/CscData.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/CscData.h
@@ -28,6 +28,7 @@ namespace TrigL2MuonSA {
     double z;
     int    charge;
     double time;
+    float resolution;
     //
     double Residual;
     int    isOutlier;
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscDataPreparator.cxx
index e0f853c2127f..1dcf43f220d7 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscDataPreparator.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscDataPreparator.cxx
@@ -210,12 +210,13 @@ StatusCode TrigL2MuonSA::CscDataPreparator::prepareData(const TrigRoiDescriptor*
 	cscHit.StripId = (cscHit.StationName << 18)
 	  | ((cscHit.StationEta + 2) << 16) | (cscHit.StationPhi << 12)
 	  | (cscHit.WireLayer << 9) | (cscHit.MeasuresPhi << 8) | (cscHit.Strip);
-	cscHit.eta = sqrt( prepData.localCovariance()(0,0) );
+	cscHit.eta = prepData.globalPosition().eta();
 	cscHit.phi = prepData.globalPosition().phi();
 	cscHit.r   = prepData.globalPosition().perp();
 	cscHit.z   = prepData.globalPosition().z();
 	cscHit.charge = prepData.charge();
 	cscHit.time   = prepData.time();
+	cscHit.resolution = sqrt( prepData.localCovariance()(0,0) );
 	cscHit.Residual =  ( cscHit.MeasuresPhi==0 ) ? calc_residual( aw, bw, cscHit.z, cscHit.r ) : calc_residual_phi( aw,bw,phiw, cscHit.phi, cscHit.z);
 	cscHit.isOutlier = 0;
 	/*if( fabs(cscHit.Residual) > rWidth ) {
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx
index 1408a4556889..fc773f9d09de 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx
@@ -1146,15 +1146,20 @@ bool MuFastSteering::storeMuonSA(const LVL1::RecMuonRoI*             roi,
   muonSA->setCscHitsCapacity( m_esd_csc_size );
 
   // MDT hits
+  std::vector<std::string> mdtId;
   for (unsigned int i_hit=0; i_hit<mdtHits.size(); i_hit++) {
     if ( mdtHits[i_hit].isOutlier==0 || mdtHits[i_hit].isOutlier==1 ) {
       muonSA->setMdtHit(mdtHits[i_hit].OnlineId, mdtHits[i_hit].isOutlier, mdtHits[i_hit].Chamber,
                         mdtHits[i_hit].R, mdtHits[i_hit].Z, mdtHits[i_hit].cPhi0, mdtHits[i_hit].Residual, 
                         mdtHits[i_hit].DriftTime, mdtHits[i_hit].DriftSpace, mdtHits[i_hit].DriftSigma);  
+      mdtId.push_back(mdtHits[i_hit].Id.getString());
     }
   }
+  SG::AuxElement::Accessor< std::vector<std::string> > accessor_mdthitid( "mdtHitId" );
+  accessor_mdthitid( *muonSA ) = mdtId;
   
   //CSC hits
+  std::vector<float> cscResol;
   for(unsigned int i_hit=0; i_hit<cscHits.size(); i_hit++) {
     if ( 1/*cscHits[i_hit].MeasuresPhi==0*/ ){
       if ( cscHits[i_hit].isOutlier==0 || cscHits[i_hit].isOutlier==1 ) {
@@ -1163,6 +1168,7 @@ bool MuFastSteering::storeMuonSA(const LVL1::RecMuonRoI*             roi,
                           cscHits[i_hit].ChamberLayer, cscHits[i_hit].WireLayer, cscHits[i_hit].MeasuresPhi, cscHits[i_hit].Strip,
                           cscHits[i_hit].eta, cscHits[i_hit].phi, cscHits[i_hit].r, cscHits[i_hit].z,
                           cscHits[i_hit].charge, cscHits[i_hit].time, cscHits[i_hit].Residual);
+	cscResol.push_back(cscHits[i_hit].resolution);
         ATH_MSG_DEBUG("CSC Hits stored in xAOD: "
       		<< "OL=" << cscHits[i_hit].isOutlier << ","
       		<< "Ch=" << cscHits[i_hit].Chamber << ","
@@ -1183,6 +1189,8 @@ bool MuFastSteering::storeMuonSA(const LVL1::RecMuonRoI*             roi,
       }
     }
   }
+  SG::AuxElement::Accessor< std::vector<float> > accessor_cschitresol( "cscHitResolution" );
+  accessor_cschitresol( *muonSA ) = cscResol;
 
   // RPC hits
   float sumbeta[8]={0};
diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDM.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDM.py
index ecad149c6ccf..1860061ee184 100644
--- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDM.py
+++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDM.py
@@ -133,6 +133,11 @@ RemoveEgammaIsoVariables = ".-"+identifier.join(UnusedEgammaIsoVariables)
 #####################
 #####################
 
+# Add Dynamic Var
+identifierAdd = "."
+l2saVariableToAdd = ['mdtHitId','cscHitResolution']
+addL2saVars = "." + identifierAdd.join(l2saVariableToAdd)
+
 # temporary functionality to discover version of EDM
 ####################
     
@@ -286,7 +291,7 @@ TriggerHLTList = [
     #muons
     #L2 Muons
     ('xAOD::L2StandAloneMuonContainer#HLT_MuonL2SAInfo',                        'BS ESD AODFULL AODSLIM',                'Muon'),
-    ('xAOD::L2StandAloneMuonAuxContainer#HLT_MuonL2SAInfoAux.',                 'BS ESD AODFULL AODSLIM',                'Muon'),
+    ('xAOD::L2StandAloneMuonAuxContainer#HLT_MuonL2SAInfoAux' + addL2saVars,    'BS ESD AODFULL AODSLIM',                'Muon'),
     ('xAOD::L2CombinedMuonContainer#HLT_MuonL2CBInfo',                          'BS ESD AODFULL AODSLIM',                'Muon'), #fp
     ('xAOD::L2CombinedMuonAuxContainer#HLT_MuonL2CBInfoAux.',                   'BS ESD AODFULL AODSLIM',                'Muon'), #fp
     ('xAOD::L2IsoMuonContainer#HLT_MuonL2ISInfo',                               'BS ESD AODFULL',                'Muon'), #fp
@@ -294,7 +299,7 @@ TriggerHLTList = [
 
     #MuonEFInfo
     ('xAOD::MuonContainer#HLT_MuonEFInfo',                                         'BS ESD AODFULL AODSLIM AODVERYSLIM',                'Muon'),
-    ('xAOD::MuonAuxContainer#HLT_MuonEFInfoAux.',                                  'BS ESD AODFULL AODSLIM AODVERYSLIM',                'Muon'),
+    ('xAOD::MuonAuxContainer#HLT_MuonEFInfoAux'+RemoveMuonVariables,               'BS ESD AODFULL AODSLIM AODVERYSLIM',                'Muon'),
     ('xAOD::TrackParticleContainer#HLT_MuonEFInfo_CombTrackParticles',             'BS ESD AODFULL AODSLIM',                'Muon'),#fp
     ('xAOD::TrackParticleAuxContainer#HLT_MuonEFInfo_CombTrackParticlesAux'+RemoveIDVariables,   'BS ESD AODFULL AODSLIM','Muon'),#fp
     ('xAOD::TrackParticleContainer#HLT_MuonEFInfo_ExtrapTrackParticles',           'BS ESD AODFULL AODSLIM',                'Muon'),#fp
@@ -1674,7 +1679,7 @@ def getTriggerEDMSlimList(key):
     for k,v in _edmList.items():
         newnames = []
         for el in v:
-            if 'Aux' in el:
+            if 'Aux' in el and '.-' in el:
                 newnames+=[el.split('.')[0]+'.-']
             else:
                 newnames+=[el]
-- 
GitLab