Skip to content
Snippets Groups Projects
Commit 37475234 authored by Tamara Vazquez Schroeder's avatar Tamara Vazquez Schroeder
Browse files

Merge branch 'FTK0917' into '21.0'

Introduce temporary work around suggested by John Baines which enables to retrieve FTK vertices.

See merge request !4842

Former-commit-id: a5000ca505cb65134830792bfcc0fddc46ec6079
parents d6245622 deee94e7
No related branches found
No related tags found
No related merge requests found
......@@ -644,6 +644,8 @@ StatusCode HLTBjetMonTool::book(){
} // MCflag
*/
ATH_MSG_DEBUG(" ========= Start retrival of Offline histograms ========== ");
std::string HistDir = "/Offline";
std::string HistExt = "";
// Get offline PV - non FTK
......@@ -652,7 +654,7 @@ StatusCode HLTBjetMonTool::book(){
const xAOD::VertexContainer* offlinepv = 0;
if ( evtStore()->contains<xAOD::VertexContainer>("PrimaryVertices") ) {
ATH_CHECK( evtStore()->retrieve(offlinepv, "PrimaryVertices") );
ATH_MSG_DEBUG("RETRIEVED OFFLINE PV - size: " << offlinepv->size());
ATH_MSG_DEBUG("RETRIEVED OFFLINE standard PV - size: " << offlinepv->size());
if ( offlinepv->size() ) {
Eofflinepv = true;
offlinepvz = offlinepv->front()->z();
......@@ -677,7 +679,7 @@ StatusCode HLTBjetMonTool::book(){
EofflinepvFTK = true;
offlinepvzFTK = offlinepvFTK->front()->z();
if (EofflinepvFTK) ATH_MSG_DEBUG(" 1st zPV FTK a la Carlo: " << offlinepvzFTK);
/*
/* for the moment FTK offline vertices are not moniored
hist("nPV"+HistExt,"HLT/BjetMon/Shifter"+HistDir)->Fill(offlinepvFTK->size());
for (unsigned int j = 0; j<offlinepvFTK->size(); j++){
hist("PVxFTK"+HistExt,"HLT/BjetMon/Shifter"+HistDir)->Fill((*(offlinepvFTK))[j]->x());
......@@ -689,13 +691,12 @@ StatusCode HLTBjetMonTool::book(){
} // evtStore
//
ATH_MSG_DEBUG(" Offline histograms are stored successfully !");
ATH_MSG_DEBUG(" ======== Offline histograms are retrieved successfully ! ==== Start online histograms to retrieve ====== ");
// Get online combinations
bool SplitKey;
bool FTKchain;
// unsigned int ichain = 0;
// Loop on trigger items
......@@ -728,9 +729,12 @@ StatusCode HLTBjetMonTool::book(){
m_trackKey = "InDetTrigTrackingxAODCnv_Bjet_IDTrig";
}
// FTK input chains: John Baines and Julie Hart
FTKchain = false;
std::size_t found1 = trigItem.find("FTK");
if (found1!=std::string::npos) {
m_priVtxKey = "HLT_PrimVertexFTK";
FTKchain = true;
// m_priVtxKey = "HLT_PrimVertexFTK";
m_priVtxKey = "PrimVertexFTK"; // Mark Sutton 17.09.17
m_trackKey = "InDetTrigTrackingxAODCnv_Bjet_FTK_IDTrig";
std::size_t found2 = trigItem.find("FTKRefit");
if (found2!=std::string::npos) {
......@@ -747,7 +751,7 @@ StatusCode HLTBjetMonTool::book(){
m_jetKey = "GSCJet";
} // if found4
ATH_MSG_DEBUG( " Trigger chain name: " << trigItem << " m_jetKey: " << m_jetKey << " m_priVtxKey: " << m_priVtxKey
<< " m_trackKey: " << m_trackKey << " SplitKey: " << SplitKey );
<< " m_trackKey: " << m_trackKey << " SplitKey: " << SplitKey << " FTKchain: " << FTKchain);
ATH_MSG_DEBUG("PROCESSING TRIGITEM - " << trigItem);
// Set flag MuJet
bool MuJet = false;
......@@ -760,6 +764,31 @@ StatusCode HLTBjetMonTool::book(){
bool HistTrack = !MuJet;
bool HistBjet = !MuJet;
float m_zPrmVtx = 0.; // used for muon-jets
// Temporary work-around to retrieve online PV for FTK chains suggested by John Baines 2017/09/12
// Dummy vertices not treated here for the moment
if (FTKchain) {
const xAOD::VertexContainer * onlinepvFTK = 0;
if ( evtStore()->contains<xAOD::VertexContainer>("HLT_xAOD__VertexContainer_PrimVertexFTK") ) {
ATH_CHECK( evtStore()->retrieve(onlinepvFTK, "HLT_xAOD__VertexContainer_PrimVertexFTK") );
ATH_MSG_DEBUG("RETRIEVED FTK PV from evtStore - size: " << onlinepvFTK->size());
if( not onlinepvFTK->empty()) {
int iVsize = onlinepvFTK->size();
for (int iV = 0; iV < iVsize; iV++){
ATH_MSG_DEBUG(" FTK evtStore Online PV - iV: " << iV << " z[iV]: " << (*(onlinepvFTK))[iV]->z() << " type: " << (*(onlinepvFTK))[iV]->vertexType() );
} // for iV
if(HistPV) hist("PVx_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepvFTK))[0]->x());
if(HistPV) hist("PVy_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepvFTK))[0]->y());
if(HistPV) hist("PVz_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepvFTK))[0]->z());
if(HistPV) hist("nPV_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(onlinepvFTK->size());
m_zPrmVtx = (*(onlinepvFTK))[0]->z();
if (EofflinepvFTK && HistPV) hist("diffzPV0offPVon"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepvFTK))[0]->z()-offlinepvzFTK);
} // not onlinepvFTK->empty()
} // if contains
} // FTK chain
Trig::FeatureContainer fc = m_trigDec->features(trigItem);
const std::vector< Trig::Combination >& bjetCombs = fc.getCombinations();
ATH_MSG_DEBUG("RETRIEVED " << bjetCombs.size() << " COMBINATIONS FOR " << trigItem);
......@@ -769,58 +798,62 @@ StatusCode HLTBjetMonTool::book(){
for( bjetComb = bjetCombs.begin(); bjetComb != bjetCombs.end(); ++bjetComb ) {
const Trig::Combination& comb = *bjetComb;
ATH_MSG_DEBUG("------------ NEW COMBINATION ------------");
float m_zPrmVtx = 0.; // used for muon-jets
// Get online PV
bool DummyVtx = false;
const std::vector< Trig::Feature<xAOD::VertexContainer> > onlinepvs = comb.get<xAOD::VertexContainer>(m_priVtxKey);
ATH_MSG_DEBUG("RETRIEVED PV - size: " << onlinepvs.size());
if ( not onlinepvs.empty() ) {
const xAOD::VertexContainer* onlinepv = onlinepvs[0].cptr();
ATH_MSG_DEBUG(" for VertexContainer: " << m_priVtxKey << " nVert: " << onlinepv->size());
if( not onlinepv->empty()) {
if ( (*(onlinepv))[0]->vertexType() == xAOD::VxType::VertexType:: PriVtx ) { // test that PriVtx is not dummy (JA)
if(HistPV) hist("PVx_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->x());
if(HistPV) hist("PVy_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->y());
if(HistPV) hist("PVz_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->z());
m_zPrmVtx = (*(onlinepv))[0]->z();
if (Eofflinepv && HistPV) hist("diffzPV0offPVon"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->z()-offlinepvz);
ATH_MSG_DEBUG(" Online PV - z[0]: " << (*(onlinepv))[0]->z());
} // if PV not dummy
else {
DummyVtx = true;
ATH_MSG_DEBUG(" Dummy Vertex found: DummyVtx = " << DummyVtx << " m_jetKey = " << m_jetKey << " HistExt = " << HistExt << " m_priVtxKey " << m_priVtxKey );
ATH_MSG_DEBUG(" Online dummy PV - type: " << (*(onlinepv))[0]->vertexType() << " x[0]: " << (*(onlinepv))[0]->x()
<< " y[0]: " << (*(onlinepv))[0]->y() << " z[0]: " << (*(onlinepv))[0]->z() );
int dummyflag = -1;
if(HistPV) hist("nPV_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(dummyflag);
// continue; // if vertex is dummy skip reading out the other quntities for this trigger combination (EN)
} // else
if (!DummyVtx && HistPV) hist("nPV_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(onlinepv->size());
} // if onlinepv not empty
} // if onlinepvs not empty
if ( SplitKey && DummyVtx ) {
// for SplitJets and DummyVtx monitor Vtx with Histogram algorithm
const std::vector< Trig::Feature<xAOD::VertexContainer> >onlinepvsd = comb.get<xAOD::VertexContainer>("EFHistoPrmVtx");
ATH_MSG_DEBUG("RETRIEVED PV with Histo algo for Split chains when Dummy vtx found with xPrimVx algo- size: " << onlinepvsd.size());
if ( not onlinepvsd.empty() ) {
const xAOD::VertexContainer* onlinepv = onlinepvsd[0].cptr();
ATH_MSG_DEBUG(" for VertexContainer EFHistoPrmVtx - nVert: " << onlinepv->size());
m_zPrmVtx = 0.; // used for muon-jets
if (!FTKchain) {
// Get online PV
bool DummyVtx = false;
const std::vector< Trig::Feature<xAOD::VertexContainer> > onlinepvs = comb.get<xAOD::VertexContainer>(m_priVtxKey);
ATH_MSG_DEBUG("RETRIEVED PV - size: " << onlinepvs.size());
if ( not onlinepvs.empty() ) {
const xAOD::VertexContainer* onlinepv = onlinepvs[0].cptr();
ATH_MSG_DEBUG(" for VertexContainer: " << m_priVtxKey << " nVert: " << onlinepv->size());
if( not onlinepv->empty()) {
if ( (*(onlinepv))[0]->vertexType() == xAOD::VxType::VertexType:: PriVtx ) { // test that PriVtx is not dummy (JA)
if(HistPV) hist("PVx_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->x());
if(HistPV) hist("PVy_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->y());
if(HistPV) hist("PVz_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->z());
if(HistPV) hist("nPV_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(onlinepv->size());
ATH_MSG_DEBUG(" Dummy PV using Histogram algorithm - type: " << (*(onlinepv))[0]->vertexType() << " x[0]: " << (*(onlinepv))[0]->x()
if(HistPV) hist("PVx_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->x());
if(HistPV) hist("PVy_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->y());
if(HistPV) hist("PVz_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->z());
m_zPrmVtx = (*(onlinepv))[0]->z();
if (Eofflinepv && HistPV) hist("diffzPV0offPVon"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->z()-offlinepvz);
ATH_MSG_DEBUG(" Online PV - z[0]: " << (*(onlinepv))[0]->z());
} // if PV not dummy
else {
DummyVtx = true;
ATH_MSG_DEBUG(" Dummy Vertex found: DummyVtx = " << DummyVtx << " m_jetKey = " << m_jetKey << " HistExt = " << HistExt << " m_priVtxKey " << m_priVtxKey );
ATH_MSG_DEBUG(" Online dummy PV - type: " << (*(onlinepv))[0]->vertexType() << " x[0]: " << (*(onlinepv))[0]->x()
<< " y[0]: " << (*(onlinepv))[0]->y() << " z[0]: " << (*(onlinepv))[0]->z() );
} // if VertexType
} // if not onlinepv
} // if not onlinepvs
continue; // if vertex is dummy skip reading out the other quntities for this trigger combination (EN)
} // if DummyVtx
ATH_MSG_DEBUG(" PV histograms are investigated ");
int dummyflag = -1;
if(HistPV) hist("nPV_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(dummyflag);
// continue; // if vertex is dummy skip reading out the other quntities for this trigger combination (EN)
} // else
if (!DummyVtx && HistPV) hist("nPV_tr"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(onlinepv->size());
} // if onlinepv not empty
} // if onlinepvs not empty
if ( SplitKey && DummyVtx ) {
// for SplitJets and DummyVtx monitor Vtx with Histogram algorithm
const std::vector< Trig::Feature<xAOD::VertexContainer> >onlinepvsd = comb.get<xAOD::VertexContainer>("EFHistoPrmVtx");
ATH_MSG_DEBUG("RETRIEVED PV with Histo algo for Split chains when Dummy vtx found with xPrimVx algo- size: " << onlinepvsd.size());
if ( not onlinepvsd.empty() ) {
const xAOD::VertexContainer* onlinepv = onlinepvsd[0].cptr();
ATH_MSG_DEBUG(" for VertexContainer EFHistoPrmVtx - nVert: " << onlinepv->size());
if( not onlinepv->empty()) {
if ( (*(onlinepv))[0]->vertexType() == xAOD::VxType::VertexType:: PriVtx ) { // test that PriVtx is not dummy (JA)
if(HistPV) hist("PVx_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->x());
if(HistPV) hist("PVy_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->y());
if(HistPV) hist("PVz_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill((*(onlinepv))[0]->z());
if(HistPV) hist("nPV_tr_Hist"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(onlinepv->size());
ATH_MSG_DEBUG(" Dummy PV using Histogram algorithm - type: " << (*(onlinepv))[0]->vertexType() << " x[0]: " << (*(onlinepv))[0]->x()
<< " y[0]: " << (*(onlinepv))[0]->y() << " z[0]: " << (*(onlinepv))[0]->z() );
} // if VertexType
} // if not onlinepv
} // if not onlinepvs
continue; // if vertex is dummy skip reading out the other quntities for this trigger combination (EN)
} // if DummyVtx
} // if (!FTKchain)
ATH_MSG_DEBUG(" ======== End of retrival of PV histograms ============== ");
// Get online jet
const std::vector< Trig::Feature<xAOD::JetContainer> > onlinejets = comb.get<xAOD::JetContainer>(m_jetKey);
......@@ -901,16 +934,22 @@ StatusCode HLTBjetMonTool::book(){
if (HistTrack) hist("nTrack"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(nTrack);
for(const auto* trk : *onlinetrack) {
ATH_MSG_DEBUG(" pT: " << (trk->pt())*1.e-3 << " Eta: " << trk->eta() << " Phi: " << trk->phi() << " d0: " << trk->d0() );
if (Eofflinepv) ATH_MSG_DEBUG(" z0 - zPVoffl: " << trk->z0()+trk->vz()-offlinepvz ); // John A
if (HistTrack) hist("d0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(trk->d0());
if (HistTrack) hist("z0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(trk->z0());
if (HistTrack) hist("ed0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(Amg::error(trk->definingParametersCovMatrix(), 0));
if (HistTrack) hist("ez0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(Amg::error(trk->definingParametersCovMatrix(), 1));
if (Eofflinepv && HistTrack) hist("diffz0PV0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(trk->z0()+trk->vz()-offlinepvz); // John Alison
float errz0 = Amg::error(trk->definingParametersCovMatrix(), 1);
if ( errz0 >0. && Eofflinepv && HistTrack) hist("sigz0PV"+HistExt,"HLT/BjetMon/"+HistDir)->Fill( (trk->z0()+trk->vz()-offlinepvz)/errz0 ); // John Alison
if (HistTrack) hist("trkPt"+HistExt,"HLT/BjetMon/"+HistDir)->Fill( (trk->pt())*1.e-3 );
if (HistTrack) hist2("trkEtaPhi"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(trk->eta(),trk->phi());
float errz0 = Amg::error(trk->definingParametersCovMatrix(), 1);
if (FTKchain) {
if (EofflinepvFTK) ATH_MSG_DEBUG(" z0 - zPVoffl: " << trk->z0()+trk->vz()-offlinepvzFTK ); // John A
if (EofflinepvFTK && HistTrack) hist("diffz0PV0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(trk->z0()+trk->vz()-offlinepvzFTK); // John Alison
if ( errz0 >0. && EofflinepvFTK && HistTrack) hist("sigz0PV"+HistExt,"HLT/BjetMon/"+HistDir)->Fill( (trk->z0()+trk->vz()-offlinepvzFTK)/errz0 ); // John Alison
} else { // if FTKchain
if (Eofflinepv) ATH_MSG_DEBUG(" z0 - zPVoffl: " << trk->z0()+trk->vz()-offlinepvz ); // John A
if (Eofflinepv && HistTrack) hist("diffz0PV0"+HistExt,"HLT/BjetMon/"+HistDir)->Fill(trk->z0()+trk->vz()-offlinepvz); // John Alison
if ( errz0 >0. && Eofflinepv && HistTrack) hist("sigz0PV"+HistExt,"HLT/BjetMon/"+HistDir)->Fill( (trk->z0()+trk->vz()-offlinepvz)/errz0 ); // John Alison
} // else
} // for online track particles
} // onlinetracks.size
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment