From 1c4cd8fa90e5acdcfb96f3f35d5c6849c61e9caa Mon Sep 17 00:00:00 2001
From: James Beacham <j.beacham@cern.ch>
Date: Sat, 14 Oct 2017 21:20:24 +0200
Subject: [PATCH] Revert "Merge branch 'tauhistutils-update-atltau-1368' into
 '21.0'"

This reverts commit 05fc590621de8456aab6817b0ed736bd4a1a6028 [formerly 0389d6a7d1a1e7f666bb50109cdaccc4b54cffcc], reversing
changes made to 404a00777b61ea45de4fdc14015e6c40320afb43 [formerly f1906efbefff9b96d7be87549d24f6aee8f4dd59].


Former-commit-id: c0c84f17263bec571fbceb0911d89ac6cceaaff2
---
 .../TauID/TauDQA/src/PhysValTau.cxx           | 372 +++++++++---------
 .../TauHistUtils/TauHistUtils/EVetoPlots.h    |   3 -
 .../TauHistUtils/EfficiencyPtPlots.h          |   3 -
 .../TauHistUtils/GeneralTauPlots.h            |  39 +-
 .../TauHistUtils/TauHistUtils/Migration.h     |  31 +-
 .../TauHistUtils/TauHistUtils/ParamPlots.h    |  29 +-
 .../TauHistUtils/TauHistUtils/RecoTauPlots.h  |  28 ++
 .../TauID/TauHistUtils/src/EVetoPlots.cxx     |  27 +-
 .../TauHistUtils/src/EfficiencyPtPlots.cxx    |  80 ++--
 .../TauHistUtils/src/GeneralTauPlots.cxx      |  41 +-
 .../TauID/TauHistUtils/src/Had1ProngPlots.cxx |  45 ++-
 .../TauID/TauHistUtils/src/Had3ProngPlots.cxx |   2 +-
 .../TauID/TauHistUtils/src/Migration.cxx      | 225 +++++------
 .../TauID/TauHistUtils/src/NewCorePlots.cxx   |   2 +-
 .../TauID/TauHistUtils/src/ParamPlots.cxx     |  48 ++-
 .../TauID/TauHistUtils/src/RecoTauPlots.cxx   | 115 +++++-
 16 files changed, 583 insertions(+), 507 deletions(-)

diff --git a/PhysicsAnalysis/TauID/TauDQA/src/PhysValTau.cxx b/PhysicsAnalysis/TauID/TauDQA/src/PhysValTau.cxx
index 023ac1b1b6f..2edec5e8944 100644
--- a/PhysicsAnalysis/TauID/TauDQA/src/PhysValTau.cxx
+++ b/PhysicsAnalysis/TauID/TauDQA/src/PhysValTau.cxx
@@ -34,15 +34,17 @@ using CLHEP::GeV;
 // Constructors
 ////////////////
 
-PhysValTau::PhysValTau(const std::string& type, 
-		       const std::string& name, 
-                       const IInterface* parent) : 
-    ManagedMonitorToolBase(type, name, parent)
+PhysValTau::PhysValTau( const std::string& type, 
+			const std::string& name, 
+			const IInterface* parent ) : 
+    ManagedMonitorToolBase( type, name, parent )
 {
-   declareProperty("TauContainerName", m_TauJetContainerName = "TauRecContainer");
-   declareProperty("TruthParticleContainerName", m_TruthParticleContainerName = "TruthParticle");
-   declareProperty("TauDetailsContainerName", m_TauDetailsContainerName = "TauRecDetailsContainer");
-   declareProperty("isMC", m_isMC= false);
+    declareProperty( "TauContainerName", m_TauJetContainerName = "TauRecContainer" ); 
+    declareProperty( "TruthParticleContainerName", m_TruthParticleContainerName = "TruthParticle" ); 
+    declareProperty( "TauDetailsContainerName", m_TauDetailsContainerName = "TauRecDetailsContainer" ); 
+    declareProperty("isMC",                         m_isMC= false);
+    
+    // std::cout << "Match tool Core Var Truth Cuts Et " << matchtool.getvisETCut() << " eta " << matchtool.getvisEtaCut() << std::endl;
 }
 
 // Destructor
@@ -54,187 +56,193 @@ PhysValTau::~PhysValTau()
 ////////////////////////////
 StatusCode PhysValTau::initialize()
 {
-   ATH_MSG_INFO ("Initializing " << name() << "...");    
-   ATH_CHECK(ManagedMonitorToolBase::initialize());
-   
-   // geometrical matching between Reco Tau and MC tau
-   m_DeltaRMatchCut          = 0.2;
-   m_LeadingChPiPt_Threshold = 0.0;
-   
-   //Truth Matching Cuts
-   m_visETcut                = 10.;
-   m_visEtacut               = 2.5;
+    ATH_MSG_INFO ("Initializing " << name() << "...");    
+    ATH_CHECK(ManagedMonitorToolBase::initialize());
+    
+    // geometrical matching between Reco Tau and MC tau
+    m_DeltaRMatchCut          = 0.2;
+    m_LeadingChPiPt_Threshold = 0.0;
+    
+    //Truth Matching Cuts
+    m_visETcut                = 10.;
+    m_visEtacut               = 2.5;
+    
+    
+    //Initialize Counters
+    
+    m_truth_all = 0;
+    m_truth_1p = 0;
+    m_truth_3p = 0;
     
-   //Initialize Counters
-   m_truth_all = 0;
-   m_truth_1p = 0;
-   m_truth_3p = 0;
-   
-   m_truth_all_matched = 0;
-   m_truth_1p_matched = 0;
-   m_truth_3p_matched = 0;
-   
-   return StatusCode::SUCCESS;
+    m_truth_all_matched = 0;
+    m_truth_1p_matched = 0;
+    m_truth_3p_matched = 0;
+    
+    return StatusCode::SUCCESS;
 }
 
 StatusCode PhysValTau::bookHistograms()
 {
-   ATH_MSG_INFO ("Booking hists " << name() << "...");
-   
-   // Physics validation plots are level 10
-   m_oTauValidationPlots.reset(new TauValidationPlots(0,"Tau/" /* + m_TauJetContainerName*/, m_TauJetContainerName));
-   m_oTauValidationPlots->setDetailLevel(100);
-   m_oTauValidationPlots->initialize();
-   std::vector<HistData> hists = m_oTauValidationPlots->retrieveBookedHistograms();
-   ATH_MSG_INFO ("Filling n of hists " << hists.size() << " ");
-   for (auto hist : hists) {
-      ATH_CHECK(regHist(hist.first,hist.second,all));
-   }
-   
-   return StatusCode::SUCCESS;      
+    ATH_MSG_INFO ("Booking hists " << name() << "...");
+    
+    // Physics validation plots are level 10
+    m_oTauValidationPlots.reset(new TauValidationPlots(0,"Tau/" /* + m_TauJetContainerName*/, m_TauJetContainerName));
+    m_oTauValidationPlots->setDetailLevel(100);
+    m_oTauValidationPlots->initialize();
+    std::vector<HistData> hists = m_oTauValidationPlots->retrieveBookedHistograms();
+    ATH_MSG_INFO ("Filling n of hists " << hists.size() << " ");
+    for (auto hist : hists) {
+	ATH_CHECK(regHist(hist.first,hist.second,all));
+    }
+    
+    return StatusCode::SUCCESS;      
 }
 
 StatusCode PhysValTau::fillHistograms()
 {
     
-   ATH_MSG_INFO ("Filling hists " << name() << "...");
-   ////////////////////////////////////////////////////////////////////////////////////////////////
-   // Retrieve tau container: 
-   const xAOD::TauJetContainer* taus = evtStore()->retrieve< const xAOD::TauJetContainer >( m_TauJetContainerName ); 
-   if ( !taus ) { 
-      ATH_MSG_ERROR ("Couldn't retrieve tau container with key: " << m_TauJetContainerName); 
-      return StatusCode::FAILURE; 
-   }         
-   ATH_MSG_DEBUG("Number of taus: " << taus->size()); 
+    ATH_MSG_INFO ("Filling hists " << name() << "...");
+    ////////////////////////////////////////////////////////////////////////////////////////////////
+    // Retrieve tau container: 
+    const xAOD::TauJetContainer* taus = evtStore()->retrieve< const xAOD::TauJetContainer >( m_TauJetContainerName ); 
+    if (!taus) { 
+	ATH_MSG_ERROR ("Couldn't retrieve tau container with key: " << m_TauJetContainerName); 
+	return StatusCode::FAILURE; 
+    }         
+    ATH_MSG_DEBUG( "Number of taus: " << taus->size() ); 
 
-   ////////////////////////////////////////////////////////////////////////////////////////////////
-   // Retrieve truth container:     
-   const xAOD::TruthParticleContainer* truth = 0;
-   if ( m_isMC ) {
-      truth = evtStore()->retrieve<const xAOD::TruthParticleContainer>(m_TruthParticleContainerName);
-      if ( !truth ) { 
-	 ATH_MSG_ERROR ("Couldn't retrieve tau container with key: " << m_TruthParticleContainerName); 
-	 return StatusCode::FAILURE;
-      }   
-      //  ATH_MSG_DEBUG( "Number of truth: " << truth->size() );      
-   }
-   //////////////////////////////////////////////////////////////////////////////////////////////////
-   // Retrieve true hadronic tau container from truth container
-   // getHaderonicTruth finds true taus (ID == 15) with correct status and no leptonic decay.
-   const xAOD::TruthParticleContainer* trueTauContainer = 0;
-   if ( m_isMC ) {
-      trueTauContainer = truthHandler.getHadronicTruth(truth);
-      ATH_MSG_DEBUG("Number of true had taus: " << trueTauContainer->size());
-   }
+    ////////////////////////////////////////////////////////////////////////////////////////////////
+    // Retrieve truth container:     
+    const xAOD::TruthParticleContainer* truth = 0;
+    if (m_isMC){
+    truth = evtStore()->retrieve< const xAOD::TruthParticleContainer >( m_TruthParticleContainerName );
+    if (!truth) { 
+	ATH_MSG_ERROR ("Couldn't retrieve tau container with key: " << m_TruthParticleContainerName); 
+		return StatusCode::FAILURE;
+    }   
+    //  ATH_MSG_DEBUG( "Number of truth: " << truth->size() );      
+    }
+    //////////////////////////////////////////////////////////////////////////////////////////////////
+    // Retrieve true hadronic tau container from truth container
+    // getHaderonicTruth finds true taus (ID == 15) with correct status and no leptonic decay.
+    const xAOD::TruthParticleContainer* trueTauContainer = 0;
+    if (m_isMC){
+	trueTauContainer = truthHandler.getHadronicTruth(truth);
+	ATH_MSG_DEBUG( "Number of true had taus: " << trueTauContainer->size() );      
+    }
     
-   //////////////////////////////////////////
-   // Plotting TauRec Variables
-   
-   // Loop through reco tau jet container
-   for (auto tau : *taus) { 
-      if (m_detailLevel < 10) continue;
-      if (tau->pt()/GeV < 20) continue;
-      // fill Substructure/PFO histograms
-      m_oTauValidationPlots->m_oRecoTauAllProngsPlots.fill(*tau);
-      m_oTauValidationPlots->m_oNewCorePlots.fill(*tau);
-      m_oTauValidationPlots->m_oRecTauEffPlots.fill(*tau);
-      //Reco Tau General Plots
-      m_oTauValidationPlots->m_oRecoGeneralTauAllProngsPlots.fill(*tau);
-      if ( tau->nTracks()==1 ) {
-	 m_oTauValidationPlots->m_oRecoHad1ProngPlots.fill(*tau);
-	 m_oTauValidationPlots->m_oRecTauEff1PPlots.fill(*tau);
-         
-      }
-      if ( tau->nTracks()==3 ) { 
-	 m_oTauValidationPlots->m_oRecoHad3ProngPlots.fill(*tau);
-	 m_oTauValidationPlots->m_oRecTauEff3PPlots.fill(*tau);
-      }
-   }
-   m_matched_itr.clear();
-   //////////////////////////////////////////
-   // Plotting TruthMatched Variables
-   // Loop through reco tau jet container
-   
-   // 
-   
-   if ( (trueTauContainer != 0) && (m_isMC == true) ) {
-      xAOD::TruthParticleContainer::const_iterator truth_itr = trueTauContainer->begin();
-      xAOD::TruthParticleContainer::const_iterator truth_end = trueTauContainer->end();
-      for ( ; truth_itr != truth_end; truth_itr++ ) {
-	 ATH_MSG_DEBUG( "Trying to match tau :");
-	 xAOD::TruthParticle* trueTau = const_cast<xAOD::TruthParticle*>(*truth_itr);
-	 const xAOD::TauJet *matchedRecTau = 0;
-	 ATH_MSG_DEBUG("Matching Tau");
-	 bool matched = matchTrueAndRecoTau(taus,trueTau,matchedRecTau);
-	 if ( matched ) {
-	    m_oTauValidationPlots->m_oGeneralTauAllProngsPlots.fill(*matchedRecTau);
-	    m_oTauValidationPlots->m_oNewCoreMatchedPlots.fill(*matchedRecTau);
-	    // Substructure/PFO histograms 
-	    m_oTauValidationPlots->m_oMatchedTauAllProngsPlots.fill(*matchedRecTau);
-	    m_oTauValidationPlots->m_oMatchedTauEffPlots.fill(*matchedRecTau);
-	    // 1-prong
-	    if ( matchedRecTau->nTracks() == 1 ) {
-	       m_oTauValidationPlots->m_oHad1ProngPlots.fill(*matchedRecTau);
-	       m_oTauValidationPlots->m_oMatchedTauEff1PPlots.fill(*matchedRecTau);  
-	    }
-	    // 3-prong
-	    else if( matchedRecTau->nTracks() == 3 ) {
-	       m_oTauValidationPlots->m_oHad3ProngPlots.fill(*matchedRecTau);
-	       m_oTauValidationPlots->m_oMatchedTauEff3PPlots.fill(*matchedRecTau);  
-	    }
-	 }
-      }
-      if ( taus != 0 ) {
-	 xAOD::TauJetContainer::const_iterator tau_itr = taus->begin();
-	 xAOD::TauJetContainer::const_iterator tau_end = taus->end();
-	 for ( size_t iRecTau = 0 ; iRecTau < taus->size(); iRecTau++ ) {
-	    bool alreadymatched = false;
-	    if ( m_matched_itr.size() > 0 ) {
-	       for ( size_t i = 0; i < m_matched_itr.size(); i++ ) {
-		  if(m_matched_itr.at(i) == iRecTau) alreadymatched = true;
-	       }
-	    }
-	    if ( alreadymatched ) continue;
-	    const xAOD::TauJet *recTau = taus->at(iRecTau);
-	    if ( m_detailLevel < 10 ) continue;
-	    if ( recTau->pt()/GeV < 20 ) continue;
-	    bool eleMatch = false;
-	    // Matching to electrons (Improvements needed)
-	    for ( auto mc_candidate : *truth ) {
-	       if ( abs(mc_candidate->pdgId())==11 && mc_candidate->pt()>10000. ) {
-		  float dr = sqrt( (mc_candidate->eta()-recTau->eta())*(mc_candidate->eta()-recTau->eta())
-				   + (mc_candidate->phi()-recTau->phi())*(mc_candidate->phi()-recTau->phi()));
-		  if( dr < 0.2 ) {
-		     eleMatch = true;
-		     continue;
-		  }
-	       }
-	    }
-	    // electron matched taus
-	    if ( eleMatch ) {
-	       m_oTauValidationPlots->m_oElMatchedParamPlots.fill(*recTau);
-	       m_oTauValidationPlots->m_oElMatchedEVetoPlots.fill(*recTau);
+    
+    //////////////////////////////////////////
+    // Plotting TauRec Variables
+    
+    // Loop through reco tau jet container
+    for (auto tau : *taus) { 
+	if (m_detailLevel < 10) continue;
+	if (tau->pt()/GeV < 20) continue;
+	m_oTauValidationPlots->m_oRecoTauAllProngsPlots.fill(*tau); // Substructure/PFO histograms filled      
+	m_oTauValidationPlots->m_oNewCorePlots.fill(*tau);          // NewCore histograms filled      
+	m_oTauValidationPlots->m_oRecTauEffPlots.fill(*tau);        //Eff Reco Tau plots
+	m_oTauValidationPlots->m_oRecoGeneralTauAllProngsPlots.fill(*tau);             //Reco Tau General Plots
+	if(tau->nTracks()==1){
+	    m_oTauValidationPlots->m_oRecoHad1ProngPlots.fill(*tau); //Reco Tau 1P plots
+	    m_oTauValidationPlots->m_oRecTauEff1PPlots.fill(*tau); //Eff Reco Tau 1P plots
+	    
+	}
+	if(tau->nTracks()==3){ 
+	    m_oTauValidationPlots->m_oRecoHad3ProngPlots.fill(*tau); //Reco Tau 3P plots
+	    m_oTauValidationPlots->m_oRecTauEff3PPlots.fill(*tau); //Eff Reco Tau 3P plots
+	}
+    }
+    m_matched_itr.clear();
+    //////////////////////////////////////////
+    // Plotting TruthMatched Variables
+    // Loop through reco tau jet container
+    
+    // 
+    
+    if(trueTauContainer != 0 && m_isMC==true){
+	xAOD::TruthParticleContainer::const_iterator truth_itr = trueTauContainer->begin();
+	xAOD::TruthParticleContainer::const_iterator truth_end = trueTauContainer->end();
+	//    std::cout<<"new true tau container"<<std::endl;
+	
+	for (; truth_itr != truth_end; truth_itr++) {
+	    
+	    ATH_MSG_DEBUG( "Trying to match tau :");
+	    xAOD::TruthParticle* trueTau = const_cast<xAOD::TruthParticle*>(*truth_itr);
+	    const xAOD::TauJet *matchedRecTau = 0;
+	    ATH_MSG_DEBUG("Matching Tau");
+	    bool matched = matchTrueAndRecoTau(taus,trueTau,matchedRecTau);
+	    if(matched) {
+		m_oTauValidationPlots->m_oGeneralTauAllProngsPlots.fill(*matchedRecTau);
+		m_oTauValidationPlots->m_oNewCoreMatchedPlots.fill(*matchedRecTau);          // NewCore histograms filled
+		m_oTauValidationPlots->m_oMatchedTauAllProngsPlots.fill(*matchedRecTau); // Substructure/PFO histograms filled
+		m_oTauValidationPlots->m_oMatchedTauEffPlots.fill(*matchedRecTau); 
+		
+		if(matchedRecTau->nTracks() == 1){
+		    m_oTauValidationPlots->m_oHad1ProngPlots.fill(*matchedRecTau);
+		    m_oTauValidationPlots->m_oMatchedTauEff1PPlots.fill(*matchedRecTau);  
+		    
+		    
+		}
+		if(matchedRecTau->nTracks() == 3){
+		    m_oTauValidationPlots->m_oHad3ProngPlots.fill(*matchedRecTau);
+		    m_oTauValidationPlots->m_oMatchedTauEff3PPlots.fill(*matchedRecTau);  
+		}
 	    }
-	    else {
-	       m_oTauValidationPlots->m_oFakeGeneralTauAllProngsPlots.fill(*recTau);
-	       // Substructure/PFO histograms
-	       m_oTauValidationPlots->m_oFakeTauAllProngsPlots.fill(*recTau);
-	       m_oTauValidationPlots->m_oNewCoreFakePlots.fill(*recTau);
-	       m_oTauValidationPlots->m_oFakeTauEffPlots.fill(*recTau);
-	       if ( recTau->nTracks()==1 ) {
-		  m_oTauValidationPlots->m_oFakeHad1ProngPlots.fill(*recTau);
-		  m_oTauValidationPlots->m_oFakeTauEff1PPlots.fill(*recTau);
-	       }
-	       if ( recTau->nTracks()==3 ) {
-		  m_oTauValidationPlots->m_oFakeTauEff3PPlots.fill(*recTau);
-		  m_oTauValidationPlots->m_oFakeHad3ProngPlots.fill(*recTau);    
-	       }
+	}
+	
+	//    std::cout<<"Number of matched: "<<m_matched_itr.size()<<std::endl;
+	if(taus != 0){
+	    xAOD::TauJetContainer::const_iterator tau_itr = taus->begin();
+	    xAOD::TauJetContainer::const_iterator tau_end = taus->end();
+	    for (size_t iRecTau = 0 ; iRecTau < taus->size(); iRecTau++) {
+		bool alreadymatched = false;
+		if(m_matched_itr.size()>0)
+		  for (size_t i = 0; i<m_matched_itr.size(); i++)
+		    if(m_matched_itr.at(i) == iRecTau) alreadymatched = true;
+		if(alreadymatched)continue;
+		const xAOD::TauJet *recTau = taus->at(iRecTau);
+		if (m_detailLevel < 10) continue;
+		if (recTau->pt()/GeV < 20) continue;
+		bool eleMatch = false;
+		// Matching to electrons (Improvements needed)
+		for (auto mc_candidate : *truth) {
+		    
+		    if(abs(mc_candidate->pdgId())==11 && mc_candidate->pt()>10000.)
+			{
+			    float dr = sqrt( (mc_candidate->eta()-recTau->eta())*(mc_candidate->eta()-recTau->eta()) + (mc_candidate->phi()-recTau->phi())*(mc_candidate->phi()-recTau->phi()));
+			    if( dr < 0.2 ) {
+				eleMatch = true;
+				continue;
+			    }
+			}
+		}
+		if(eleMatch){
+		    m_oTauValidationPlots->m_oElMatchedParamPlots.fill(*recTau);
+		    
+		}else{
+		    m_oTauValidationPlots->m_oFakeGeneralTauAllProngsPlots.fill(*recTau);
+		    m_oTauValidationPlots->m_oFakeTauAllProngsPlots.fill(*recTau); // Substructure/PFO histograms filled
+		    m_oTauValidationPlots->m_oNewCoreFakePlots.fill(*recTau);          // NewCore histograms filled
+		    m_oTauValidationPlots->m_oFakeTauEffPlots.fill(*recTau);		    
+		    if(recTau->nTracks()==1)
+			{
+			    m_oTauValidationPlots->m_oFakeHad1ProngPlots.fill(*recTau);
+			    m_oTauValidationPlots->m_oFakeTauEff1PPlots.fill(*recTau);
+			}
+		    if(recTau->nTracks()==3) 
+			{
+			    m_oTauValidationPlots->m_oFakeTauEff3PPlots.fill(*recTau);
+			    m_oTauValidationPlots->m_oFakeHad3ProngPlots.fill(*recTau);	   
+			}
+		    
+		}
+		
 	    }
-	 }
-      }
-   }   /////////////////////////////////////////////////////////////////////////////////////////////////
-   
-   return StatusCode::SUCCESS;
+	}
+    }	/////////////////////////////////////////////////////////////////////////////////////////////////
+    
+    return StatusCode::SUCCESS;
 }
 
 StatusCode PhysValTau::procHistograms()
@@ -258,11 +266,11 @@ bool PhysValTau::matchTrueAndRecoTau(const xAOD::TauJetContainer *&taus, const x
     ATH_MSG_DEBUG( "True decay mode is " << nCharged << "p" << nNeutral << "n" ); 
     
     if (!RecoTypes::IsValidMode(trueDecayMode)) {
-        ATH_MSG_DEBUG(" Decay mode is not valid, skipping..." ); 
+	ATH_MSG_DEBUG(" Decay mode is not valid, skipping..." ); 
         return false;
     }
 
-    TLorentzVector visSum = truthHandler.getTauVisibleSumTruth(trueTau);                    // Get visible TLV for true had tau         
+    TLorentzVector visSum = truthHandler.getTauVisibleSumTruth(trueTau);                    // Get visible TLV for true had tau		
     if ((visSum.Et()/GeV < m_visETcut) || (fabs(visSum.Eta()) > m_visEtacut)) return false;    // Detector limitations
     
     xAOD::TauJetContainer::const_iterator tau_itr = taus->begin();
@@ -280,7 +288,7 @@ bool PhysValTau::matchTrueAndRecoTau(const xAOD::TauJetContainer *&taus, const x
         double recM   = recTau->mIntermediateAxis();
         TLorentzVector hlv_recTau;
         hlv_recTau.SetPtEtaPhiM(recPt, recEta, recPhi, recM);
-        
+	
         double curDeltaR = visSum.DeltaR(hlv_recTau);
         if (curDeltaR < minDeltaR) {
             minDeltaR = curDeltaR;
@@ -292,10 +300,10 @@ bool PhysValTau::matchTrueAndRecoTau(const xAOD::TauJetContainer *&taus, const x
     }
     
     if(matched){
-        const xAOD::TauJet *recTau = taus->at(iMatchedRecTau);
-        m_oTauValidationPlots->m_oMigrationPlots.fill(*recTau,nCharged,nNeutral); //Migration      
-        m_matched_itr.push_back(iMatchedRecTau);
-        //    std::cout<<"Number of matched between: "<<m_matched_itr.size()<<std::endl;
+	const xAOD::TauJet *recTau = taus->at(iMatchedRecTau);
+	m_oTauValidationPlots->m_oMigrationPlots.fill(*recTau,nCharged,nNeutral); //Migration      
+	m_matched_itr.push_back(iMatchedRecTau);
+	//    std::cout<<"Number of matched between: "<<m_matched_itr.size()<<std::endl;
     }
     
     return matched;
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EVetoPlots.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EVetoPlots.h
index 1ff5648c0c7..6c20f83560d 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EVetoPlots.h
+++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EVetoPlots.h
@@ -24,9 +24,6 @@ class EVetoPlots: public PlotBase {
     TH1* m_pt_eleBDTloose;
     TH1* m_pt_eleBDTmed; 
     TH1* m_pt_eleBDTtight;
-    TH1* m_pt_eleBDTlooseHighPt;
-    TH1* m_pt_eleBDTmedHighPt; 
-    TH1* m_pt_eleBDTtightHighPt;
     
   private:
     void initializePlots();
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EfficiencyPtPlots.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EfficiencyPtPlots.h
index ade7ba15a6a..c5e4f3673c1 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EfficiencyPtPlots.h
+++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/EfficiencyPtPlots.h
@@ -21,9 +21,6 @@ class EfficiencyPtPlots: public PlotBase {
     TProfile* m_eff_pt_jetBDTloose;
     TProfile* m_eff_pt_jetBDTmed;
     TProfile* m_eff_pt_jetBDTtight;
-    TProfile* m_eff_pt_jetBDTlooseHighPt;
-    TProfile* m_eff_pt_jetBDTmedHighPt;
-    TProfile* m_eff_pt_jetBDTtightHighPt;
 
     TProfile* m_eff_jetBDTloose;
     TProfile* m_eff_jetBDTmed;
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/GeneralTauPlots.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/GeneralTauPlots.h
index 3dd320031eb..151ced0f00b 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/GeneralTauPlots.h
+++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/GeneralTauPlots.h
@@ -13,27 +13,24 @@
 namespace Tau{
 
 class GeneralTauPlots: public PlotBase {
-   public:
-      GeneralTauPlots(PlotBase *pParent, std::string sDir, std::string sTauJetContainerName);
-      virtual ~GeneralTauPlots();
-      
-      void fill(const xAOD::TauJet& tau);
-      
-      Tau::ParamPlots m_oParamPlots;
-      TH1* m_tauCharge;
-      TH1* m_tauNCoreTracks;
-      TH1* m_tauNWideTracks;
-      TH1* m_id_BDTJetScore;
-      TH1* m_pt_jetBDTloose;
-      TH1* m_pt_jetBDTmed;
-      TH1* m_pt_jetBDTtight;
-      TH1* m_pt_jetBDTlooseHighPt;
-      TH1* m_pt_jetBDTmedHighPt;
-      TH1* m_pt_jetBDTtightHighPt;
-
-   private:
-      void initializePlots();
-      std::string m_sTauJetContainerName;
+  public:
+    GeneralTauPlots(PlotBase *pParent, std::string sDir, std::string sTauJetContainerName);
+    virtual ~GeneralTauPlots();
+
+    void fill(const xAOD::TauJet& tau);
+
+    Tau::ParamPlots m_oParamPlots;
+    TH1* m_tauCharge;
+    TH1* m_tauNCoreTracks;
+    TH1* m_tauNWideTracks;
+    TH1* m_id_BDTJetScore;
+    TH1* m_pt_jetBDTloose;
+    TH1* m_pt_jetBDTmed;
+    TH1* m_pt_jetBDTtight;
+
+  private:
+    void initializePlots();
+    std::string m_sTauJetContainerName;
 };
 
 }
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/Migration.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/Migration.h
index ed51f467c75..d43b568f477 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/Migration.h
+++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/Migration.h
@@ -57,14 +57,39 @@ namespace Tau{
 	    "t1r3",
 	    "t3r1"
 	};
+	/*
+	    "t10r10",
+	    "t10r11",
+	    "t10r1x",
+	    "t10r30",
+	    "t10r3x",
+	    "t11r10",
+	    "t11r11",
+	    "t11r1x",
+	    "t11r30",
+	    "t11r3x",
+	    "t1xr10",
+	    "t1xr11",
+	    "t1xr1x",
+	    "t1xr30",
+	    "t1xr3x",
+	    "t30r10",
+	    "t30r11",
+	    "t30r1x",
+	    "t30r30",
+	    "t30r3x",
+	    "t3xr10",
+	    "t3xr11",
+	    "t3xr1x",
+	    "t3xr30",
+	    "t3xr3x"*/
 	
-	TH1* m_migration_panTau;
-	TH1* m_migration_panTauProto;
+	TH1* m_migration_tauRec;
+	TH1* m_migration_eflow;
 	TH1* m_migration_cellBased;
     private:
 	void initializePlots();
 	std::string m_sTauJetContainerName;
-	void decayModeFill(int trueMode, int recP, int recN,TH1 *histo);
 	void decayModeFill(int trueP,int trueN,int recP, int recN,TH1 *histo);
     };
     
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/ParamPlots.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/ParamPlots.h
index 11627c1380b..fe4019f2316 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/ParamPlots.h
+++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/ParamPlots.h
@@ -11,21 +11,20 @@
 namespace Tau{
 
 class ParamPlots:public PlotBase {
-   public:      
-      ParamPlots(PlotBase *pParent, std::string sDir, std::string sParticleType);
-      ~ParamPlots();
-      void fill(const xAOD::IParticle& prt);
-      
-      TH1* eta;
-      TH1* phi;
-      TH1* pt;
-      
-      TH1* eta_phi;
-      TH1* eta_pt;
-      
-   private:
-      void initializePlots();
-      std::string m_sParticleType;
+  public:      
+    ParamPlots(PlotBase *pParent, std::string sDir, std::string sParticleType);
+    void fill(const xAOD::IParticle& prt);
+
+    TH1* eta;
+    TH1* phi;
+    TH1* pt;
+
+    TH1* eta_phi;
+    TH1* eta_pt;
+
+  private:
+    void initializePlots();
+    std::string m_sParticleType;
 };
 
 }
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h
index cc053e39477..758ad287fde 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h
+++ b/PhysicsAnalysis/TauID/TauHistUtils/TauHistUtils/RecoTauPlots.h
@@ -22,6 +22,18 @@ class RecoTauPlots: public PlotBase {
 
     Tau::ParamPlots m_oParamPlots;
 
+    //Here I try to include eflowRec substructure variables, from the Particle FLow Object (PFO), begining with basic charged and neutral PFO 4-vector.
+    TH1* m_eflowRec_charPFO_Pt;
+    TH1* m_eflowRec_charPFO_Eta;
+    TH1* m_eflowRec_charPFO_Phi;
+    TH1* m_eflowRec_charPFO_E;
+
+    TH1* m_eflowRec_neuPFO_Pt;
+    TH1* m_eflowRec_neuPFO_Eta;
+    TH1* m_eflowRec_neuPFO_Phi;
+    TH1* m_eflowRec_neuPFO_E;
+    TH1* m_eflowRec_neuPFO_bdtPi0Score;
+
     //Here I try to include CellBased substructure variables, from the Particle FLow Object (PFO), begining with basic charged and neutral PFO 4-vector.
     TH1* m_cellBased_charPFO_Pt;
     TH1* m_cellBased_charPFO_Eta;
@@ -51,6 +63,22 @@ class RecoTauPlots: public PlotBase {
     TH1* m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed;
     TH1* m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged;
 
+    TH1* m_pantau_eflowRecInput_isPanTauCandidate;
+    TH1* m_pantau_eflowRecInput_DecayMode;
+    TH1* m_pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n;
+    TH1* m_pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn;
+    TH1* m_pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn;
+    TH1* m_pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts;
+    TH1* m_pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts;
+    TH1* m_pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts;
+    TH1* m_pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM;
+    TH1* m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1;
+    TH1* m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2;
+    TH1* m_pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts;
+    TH1* m_pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts;
+    TH1* m_pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged;
+
+
     // BDT output
 
     TH1* m_id_BDTJetScore;
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/EVetoPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/EVetoPlots.cxx
index deb71166dae..67392e0bc31 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/EVetoPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/EVetoPlots.cxx
@@ -16,9 +16,6 @@ EVetoPlots::EVetoPlots(PlotBase* pParent, std::string sDir, std::string sTauJetC
    m_pt_eleBDTloose(nullptr),
    m_pt_eleBDTmed(nullptr),
    m_pt_eleBDTtight(nullptr),
-   m_pt_eleBDTlooseHighPt(nullptr),
-   m_pt_eleBDTmedHighPt(nullptr),
-   m_pt_eleBDTtightHighPt(nullptr),
    m_sTauJetContainerName(sTauJetContainerName)
 {
 }
@@ -36,12 +33,9 @@ void EVetoPlots::initializePlots(){
   m_CentFrac  = Book1D("CentFrac",m_sTauJetContainerName + " Cent Frac; Cent Frac; # Part",20,0,1.);
 
   m_id_BDTEleScore      = Book1D("id_BDTEleScore",m_sTauJetContainerName + " BDTEleScore ; BDTEleScore; # Tau",10,0.,1.05);
-  m_pt_eleBDTloose      = Book1D("Pt_eleBDTloose",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,150.);
-  m_pt_eleBDTmed        = Book1D("Pt_eleBDTmed",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,150.);
-  m_pt_eleBDTtight      = Book1D("Pt_eleBDTtight",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,150.);
-  m_pt_eleBDTlooseHighPt = Book1D("Pt_eleBDTlooseHighPt",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,1500.);
-  m_pt_eleBDTmedHighPt   = Book1D("Pt_eleBDTmedHighPt",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,1500.);
-  m_pt_eleBDTtightHighPt = Book1D("Pt_eleBDTtightHighPt",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,1500.);
+  m_pt_eleBDTloose      = Book1D("Pt_eleBDTloose",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,300.);
+  m_pt_eleBDTmed        = Book1D("Pt_eleBDTmed",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,300.);
+  m_pt_eleBDTtight      = Book1D("Pt_eleBDTtight",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,300.);
 
 }
 
@@ -65,18 +59,9 @@ void EVetoPlots::fill(const xAOD::TauJet& tau) {
   if (test) m_CentFrac->Fill(avariable,1.);
 
   if(tau.hasDiscriminant(xAOD::TauJetParameters::BDTEleScore) )m_id_BDTEleScore->Fill(tau.discriminant(xAOD::TauJetParameters::BDTEleScore));
-  if ( tau.isTau(xAOD::TauJetParameters::EleBDTLoose) ) {
-     m_pt_eleBDTloose      ->Fill(tau.pt()/1000.0, 1.0);
-     m_pt_eleBDTlooseHighPt->Fill(tau.pt()/1000.0, 1.0);
-  }
-  if ( tau.isTau(xAOD::TauJetParameters::EleBDTMedium) ) {
-     m_pt_eleBDTmed      ->Fill(tau.pt()/1000.0, 1.0);
-     m_pt_eleBDTmedHighPt->Fill(tau.pt()/1000.0, 1.0);
-  }
-  if ( tau.isTau(xAOD::TauJetParameters::EleBDTTight) ) {
-     m_pt_eleBDTtight      ->Fill(tau.pt()/1000.0, 1.0);
-     m_pt_eleBDTtightHighPt->Fill(tau.pt()/1000.0, 1.0);
-  }
+  if(tau.isTau(xAOD::TauJetParameters::EleBDTLoose))      m_pt_eleBDTloose->Fill( tau.pt()/1000,1);
+  if(tau.isTau(xAOD::TauJetParameters::EleBDTMedium))     m_pt_eleBDTmed  ->Fill( tau.pt()/1000,1);
+  if(tau.isTau(xAOD::TauJetParameters::EleBDTTight))      m_pt_eleBDTtight->Fill( tau.pt()/1000,1);
 
 }
 
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/EfficiencyPtPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/EfficiencyPtPlots.cxx
index b48cb72af1f..9aa1ecbcdc8 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/EfficiencyPtPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/EfficiencyPtPlots.cxx
@@ -22,53 +22,45 @@ EfficiencyPtPlots::~EfficiencyPtPlots()
 {
 }
 
-void EfficiencyPtPlots::initializePlots()
-{
-   m_eff_pt_jetBDTloose       = BookTProfile("Eff_Pt_jetBDTloose"," Matched Tau loose eff in pt; pt; eff", 20, 0., 150.0);
-   m_eff_pt_jetBDTmed         = BookTProfile("Eff_Pt_jetBDTmed","Matched Tau med eff in pt; pt; eff", 20, 0.0, 150.0);
-   m_eff_pt_jetBDTtight       = BookTProfile("Eff_Pt_jetBDTtight","Matched Tau tight eff in pt; pt; eff", 20, 0.0, 150.0);
-   m_eff_pt_jetBDTlooseHighPt = BookTProfile("Eff_Pt_jetBDTlooseHightPt"," Matched Tau loose eff in pt; pt; eff", 20, 0.0, 1500.0);
-   m_eff_pt_jetBDTmedHighPt   = BookTProfile("Eff_Pt_jetBDTmedHightPt","Matched Tau med eff in pt; pt; eff", 20, 0.0, 1500.0);
-   m_eff_pt_jetBDTtightHighPt = BookTProfile("Eff_Pt_jetBDTtightHightPt","Matched Tau tight eff in pt; pt; eff", 20, 0.0, 1500.0);
-   m_eff_jetBDTloose          = BookTProfile("Eff_jetBDTloose"," Matched Tau loose eff total; bin; eff",3,-1.5,1.5);
-   m_eff_jetBDTmed            = BookTProfile("Eff_jetBDTmed","Matched Tau med eff total; bin; eff",3,-1.5,1.5);
-   m_eff_jetBDTtight          = BookTProfile("Eff_jetBDTtight","Matched Tau tight eff total; bin; eff",3,-1.5,1.5);
-}
+void EfficiencyPtPlots::initializePlots(){
 
-void EfficiencyPtPlots::fill(const xAOD::TauJet& tau)
-{
-   if ( tau.isTau(xAOD::TauJetParameters::JetBDTSigLoose) ) {
-      m_eff_pt_jetBDTloose      ->Fill(tau.pt()/1000, 1.0, 1.0);
-      m_eff_pt_jetBDTlooseHighPt->Fill(tau.pt()/1000, 1.0, 1.0);
-      m_eff_jetBDTloose         ->Fill(0.0,           1.0, 1.0);
-   }
-   else {
-      m_eff_pt_jetBDTloose      ->Fill(tau.pt()/1000, 0.0, 1.0);
-      m_eff_pt_jetBDTlooseHighPt->Fill(tau.pt()/1000, 0.0, 1.0);
-      m_eff_jetBDTloose         ->Fill(0.0,           0.0, 1.0);
-   }
+   m_eff_pt_jetBDTloose = BookTProfile("Eff_Pt_jetBDTloose"," Matched Tau loose eff in pt; pt; eff",15,0.,300.);
+   m_eff_pt_jetBDTmed   = BookTProfile("Eff_Pt_jetBDTmed","Matched Tau med eff in pt; pt; eff",15,0.,300.);
+   m_eff_pt_jetBDTtight = BookTProfile("Eff_Pt_jetBDTtight","Matched Tau tight eff in pt; pt; eff",15,0.,300.);
+   
+   m_eff_jetBDTloose    = BookTProfile("Eff_jetBDTloose"," Matched Tau loose eff total; bin; eff",3,-1.5,1.5);
+   m_eff_jetBDTmed      = BookTProfile("Eff_jetBDTmed","Matched Tau med eff total; bin; eff",3,-1.5,1.5);
+   m_eff_jetBDTtight    = BookTProfile("Eff_jetBDTtight","Matched Tau tight eff total; bin; eff",3,-1.5,1.5);
    
-   if ( tau.isTau(xAOD::TauJetParameters::JetBDTSigMedium) ) {
-      m_eff_pt_jetBDTmed      ->Fill(tau.pt()/1000, 1.0, 1.0);
-      m_eff_pt_jetBDTmedHighPt->Fill(tau.pt()/1000, 1.0, 1.0);
-      m_eff_jetBDTmed         ->Fill(0.0,           1.0, 1.0);
-   }
-   else {
-      m_eff_pt_jetBDTmed      ->Fill(tau.pt()/1000, 0.0, 1.0);
-      m_eff_pt_jetBDTmedHighPt->Fill(tau.pt()/1000, 0.0, 1.0);
-      m_eff_jetBDTmed         ->Fill(0.0,           0.0, 1.0);
-   }
 
-   if ( tau.isTau(xAOD::TauJetParameters::JetBDTSigTight) ) {
-      m_eff_pt_jetBDTtight      ->Fill(tau.pt()/1000, 1.0, 1.0);
-      m_eff_pt_jetBDTtightHighPt->Fill(tau.pt()/1000, 1.0, 1.0);
-      m_eff_jetBDTtight         ->Fill(0.0,           1.0, 1.0);
-   }
-   else {
-      m_eff_pt_jetBDTtight      ->Fill(tau.pt()/1000, 0.0, 1.0);
-      m_eff_pt_jetBDTtightHighPt->Fill(tau.pt()/1000, 0.0, 1.0);
-      m_eff_jetBDTtight         ->Fill(0.0,           0.0, 1.0);
-   }
+}
+
+void EfficiencyPtPlots::fill(const xAOD::TauJet& tau) {
+    if(tau.isTau(xAOD::TauJetParameters::JetBDTSigLoose)){
+	m_eff_pt_jetBDTloose->Fill( tau.pt()/1000,1,1);
+	m_eff_jetBDTloose->Fill( 0.,1.,1.);
+    }
+    else{
+	m_eff_pt_jetBDTloose->Fill( tau.pt()/1000,0,1);
+	m_eff_jetBDTloose->Fill( 0.,0.,1.);
+    }
+
+    if(tau.isTau(xAOD::TauJetParameters::JetBDTSigMedium)){
+	m_eff_pt_jetBDTmed  ->Fill( tau.pt()/1000,1,1);
+	m_eff_jetBDTmed  ->Fill( 0.,1.,1.);
+    }
+    else{
+	m_eff_pt_jetBDTmed  ->Fill( tau.pt()/1000,0,1);
+	m_eff_jetBDTmed  ->Fill( 0.,0.,1.);
+    }
+    if(tau.isTau(xAOD::TauJetParameters::JetBDTSigTight)){
+	m_eff_pt_jetBDTtight->Fill( tau.pt()/1000,1,1);
+	m_eff_jetBDTtight->Fill( 0.,1.,1.);
+    }
+    else{
+	m_eff_pt_jetBDTtight->Fill( tau.pt()/1000,0,1);
+	m_eff_jetBDTtight->Fill( 0.,0.,1.);
+    }
 
 }
 
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/GeneralTauPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/GeneralTauPlots.cxx
index 5fa54b51875..98ecb351415 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/GeneralTauPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/GeneralTauPlots.cxx
@@ -17,9 +17,6 @@ GeneralTauPlots::GeneralTauPlots(PlotBase* pParent, std::string sDir, std::strin
    m_pt_jetBDTloose(nullptr),
    m_pt_jetBDTmed(nullptr),
    m_pt_jetBDTtight(nullptr),
-   m_pt_jetBDTlooseHighPt(nullptr),
-   m_pt_jetBDTmedHighPt(nullptr),
-   m_pt_jetBDTtightHighPt(nullptr),
    m_sTauJetContainerName(sTauJetContainerName)
 {	
 }
@@ -29,18 +26,17 @@ GeneralTauPlots::~GeneralTauPlots()
 }
 
 void GeneralTauPlots::initializePlots(){
-   // m_oParamPlots.initialize();
-   m_tauCharge      = Book1D("Charge",m_sTauJetContainerName + " Tau charge; charge; # Taus",7,-3.,4.);
-   m_tauNCoreTracks = Book1D("NCoreTracks",m_sTauJetContainerName + " Tau n core tracks; nCore; # Taus",10,0.,10.);
-   m_tauNWideTracks = Book1D("NWideTracks",m_sTauJetContainerName + " Tau n wide tracks; nWide; # Taus",10,0.,10.);
-   m_id_BDTJetScore = Book1D("id_BDTJetScore",m_sTauJetContainerName + " BDTJetScore ; BDTJetScore; # Tau",10,1.01,1.01);
-   
-   m_pt_jetBDTloose = Book1D("Pt_jetBDTloose",m_sTauJetContainerName + " Loose tau pt; pt; # Taus",20, 0.0, 150.0);
-   m_pt_jetBDTmed   = Book1D("Pt_jetBDTmed",m_sTauJetContainerName + " Medium tau pt; pt; # Taus",20, 0.0, 150.0);
-   m_pt_jetBDTtight = Book1D("Pt_jetBDTtigth",m_sTauJetContainerName + " Tight tau pt; pt; # Taus",20, 0.0, 150.0);
-   m_pt_jetBDTlooseHighPt = Book1D("Pt_jetBDTlooseHighPt",m_sTauJetContainerName + " Loose tau pt; pt; # Taus", 20, 0.0, 1500.0);
-   m_pt_jetBDTmedHighPt   = Book1D("Pt_jetBDTmedHighPt",m_sTauJetContainerName + " Medium tau pt; pt; # Taus", 20, 0.0, 1500.0);
-   m_pt_jetBDTtightHighPt = Book1D("Pt_jetBDTtigthHighPt",m_sTauJetContainerName + " Tight tau pt; pt; # Taus", 20, 0.0, 1500.0);
+
+  //  m_oParamPlots.initialize();
+	m_tauCharge      = Book1D("Charge",m_sTauJetContainerName + " Tau charge; charge; # Taus",7,-3.,4.);
+	m_tauNCoreTracks = Book1D("NCoreTracks",m_sTauJetContainerName + " Tau n core tracks; nCore; # Taus",10,0.,10.);
+	m_tauNWideTracks = Book1D("NWideTracks",m_sTauJetContainerName + " Tau n wide tracks; nWide; # Taus",10,0.,10.);
+	m_id_BDTJetScore      = Book1D("id_BDTJetScore",m_sTauJetContainerName + " BDTJetScore ; BDTJetScore; # Tau",10,1.01,1.01);
+	m_pt_jetBDTloose      = Book1D("Pt_jetBDTloose",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,300.);
+	m_pt_jetBDTmed        = Book1D("Pt_jetBDTmed",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,300.);
+	m_pt_jetBDTtight      = Book1D("Pt_jetBDTtigth",m_sTauJetContainerName + " Tau pt; pt; # Taus",20,0.,300.);
+
+
 }
 
 void GeneralTauPlots::fill(const xAOD::TauJet& tau) {
@@ -50,18 +46,9 @@ void GeneralTauPlots::fill(const xAOD::TauJet& tau) {
   //  m_tauNWideTracks->Fill(tau.nWideTracks(), 1.);
   m_tauNWideTracks->Fill(tau.nTracks(xAOD::TauJetParameters::classifiedIsolation), 1.); // 
   if( tau.hasDiscriminant(xAOD::TauJetParameters::BDTJetScore) )m_id_BDTJetScore->Fill(tau.discriminant(xAOD::TauJetParameters::BDTJetScore));
-  if ( tau.isTau(xAOD::TauJetParameters::JetBDTSigLoose) ) {
-     m_pt_jetBDTloose       -> Fill(tau.pt()/1000, 1.0);
-     m_pt_jetBDTlooseHighPt -> Fill(tau.pt()/1000, 1.0);
-  }
-  if ( tau.isTau(xAOD::TauJetParameters::JetBDTSigMedium) ) {
-     m_pt_jetBDTmed       -> Fill(tau.pt()/1000, 1.0);
-     m_pt_jetBDTmedHighPt -> Fill(tau.pt()/1000, 1.0);
-  }
-  if ( tau.isTau(xAOD::TauJetParameters::JetBDTSigTight) ) {
-     m_pt_jetBDTtight       -> Fill(tau.pt()/1000, 1.0);
-     m_pt_jetBDTtightHighPt -> Fill(tau.pt()/1000, 1.0);
-  }
+  if(tau.isTau(xAOD::TauJetParameters::JetBDTSigLoose))   m_pt_jetBDTloose->Fill( tau.pt()/1000,1);
+  if(tau.isTau(xAOD::TauJetParameters::JetBDTSigMedium))  m_pt_jetBDTmed  ->Fill( tau.pt()/1000,1);
+  if(tau.isTau(xAOD::TauJetParameters::JetBDTSigTight))   m_pt_jetBDTtight->Fill( tau.pt()/1000,1);
 
 }
 
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/Had1ProngPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/Had1ProngPlots.cxx
index 09d2198cf1d..771ed5820c1 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/Had1ProngPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/Had1ProngPlots.cxx
@@ -6,8 +6,7 @@
 
 namespace Tau{
 
-Had1ProngPlots::Had1ProngPlots(PlotBase* pParent, std::string sDir,
-			       std::string sTauJetContainerName):
+Had1ProngPlots::Had1ProngPlots(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName):
    PlotBase(pParent, sDir),
    m_oGeneralTauPlots(this, "", sTauJetContainerName),
    m_tauNWideTracks(nullptr),
@@ -37,27 +36,27 @@ Had1ProngPlots::~Had1ProngPlots()
 
 void Had1ProngPlots::initializePlots(){
 
-   // m_oGeneralTauPlots.initialize();
-   m_tauCoreFrac   = Book1D("CoreFrac",m_sTauJetContainerName + " Tau CoreFrac; CoreFrac; # Taus",40,0.,2.);
-   m_tauEoverPTrk  = Book1D("EoverPTrk",m_sTauJetContainerName + " Tau E over pLeadTrk; EoverP; # Taus",50,0.,4.);
-   m_tauTrkAvgDist = Book1D("TrkAvgDist",m_sTauJetContainerName + " Tau track avg dist; TrkAvgDist; # Taus",10,-0.2,.8);
-   m_tauIpSig      = Book1D("IpSig",m_sTauJetContainerName + " Tau lead track IP signif. ; IpSig; # Taus",30,-15.,15.);
-   
-   m_tauDRMax     = Book1D("DRMax",m_sTauJetContainerName + " Tau DR Max track-seed; DRMax; # Taus",20,0.,0.5);
-   m_tauSflight   = Book1D("Sflight",m_sTauJetContainerName + " Tau flight sign. ; Sflight; # Taus",100,-10.,20.);
-   m_tauMtrks     = Book1D("Mtracks",m_sTauJetContainerName + " Tau tracks mass ; Mtrks; # Taus",50,-1.,10.);
-   m_SumPtTrkFrac = Book1D("SumPtTrkFrac",m_sTauJetContainerName + " Tau Sum PtTrk Frac ; SumPtTrkFrac; # Taus",100,-10.,20.);
-   
-   m_innerTrkAvgDist    = Book1D("innerTrkAvgDist",m_sTauJetContainerName + "Tau innerTrkAvgDist; innerTrkAvgDist; # of Taus",10,-0.2,.8);
-   m_ptRatioEflowApprox = Book1D("ptRatioEflowApprox",m_sTauJetContainerName + "Tau ptRatioEflowApprox; ptRatioEflowApprox; # of Taus", 10, 0, 10);
-   m_mEflowApprox       = Book1D("mEflowApprox",m_sTauJetContainerName + "Tau mEflowApprox; mEflowApprox; #Taus",30,0.0,3000.0);
-   
-   m_ChPiEMEOverCaloEME = Book1D("ChPiEMEOverCaloEME",m_sTauJetContainerName + "Tau ChPiEMEOverCaloEME; ChPiEMEOverCaloEME; # of Taus", 30, -15, 15);
-   m_EMPOverTrkSysP     = Book1D("EMPOverTrkSysP",m_sTauJetContainerName + "Tau EMPOverTrkSysP; EMPOverTrkSysP; # of Taus", 21, -1, 20);
-   
-   m_HadRadius = Book1D("HadRadius",m_sTauJetContainerName + " Had Radius; HadRadius; # Part",20,0,2.);
-   m_EMRadius  = Book1D("EMRadius",m_sTauJetContainerName + " EM Radius; EMRadius; # Part",20,0,2.);
-   m_IsoFrac   = Book1D("IsoFrac",m_sTauJetContainerName + " Iso Frac; Iso Frac; # Part",20,0,1.);
+  //  m_oGeneralTauPlots.initialize();
+	m_tauCoreFrac =    Book1D("CoreFrac",m_sTauJetContainerName + " Tau CoreFrac; CoreFrac; # Taus",40,0.,2.);
+	m_tauEoverPTrk =   Book1D("EoverPTrk",m_sTauJetContainerName + " Tau E over pLeadTrk; EoverP; # Taus",50,0.,4.);
+	m_tauTrkAvgDist =  Book1D("TrkAvgDist",m_sTauJetContainerName + " Tau track avg dist; TrkAvgDist; # Taus",10,-0.2,.8);
+	m_tauIpSig =       Book1D("IpSig",m_sTauJetContainerName + " Tau lead track IP signif. ; IpSig; # Taus",30,-15.,15.);
+
+	m_tauDRMax =       Book1D("DRMax",m_sTauJetContainerName + " Tau DR Max track-seed; DRMax; # Taus",20,0.,0.5);
+	m_tauSflight =     Book1D("Sflight",m_sTauJetContainerName + " Tau flight sign. ; Sflight; # Taus",100,-10.,20.);
+	m_tauMtrks =       Book1D("Mtracks",m_sTauJetContainerName + " Tau tracks mass ; Mtrks; # Taus",50,-1.,10.);
+	m_SumPtTrkFrac =   Book1D("SumPtTrkFrac",m_sTauJetContainerName + " Tau Sum PtTrk Frac ; SumPtTrkFrac; # Taus",100,-10.,20.);
+
+	m_innerTrkAvgDist                   = Book1D("innerTrkAvgDist",m_sTauJetContainerName + "Tau innerTrkAvgDist; innerTrkAvgDist; # of Taus",10,-0.2,.8);
+	m_ptRatioEflowApprox                 = Book1D("ptRatioEflowApprox",m_sTauJetContainerName + "Tau ptRatioEflowApprox; ptRatioEflowApprox; # of Taus", 10, 0, 10);
+    m_mEflowApprox						= Book1D("mEflowApprox",m_sTauJetContainerName + "Tau mEflowApprox; mEflowApprox; #Taus",30,0,300);
+
+    m_ChPiEMEOverCaloEME               = Book1D("ChPiEMEOverCaloEME",m_sTauJetContainerName + "Tau ChPiEMEOverCaloEME; ChPiEMEOverCaloEME; # of Taus", 30, -15, 15);
+    m_EMPOverTrkSysP                   = Book1D("EMPOverTrkSysP",m_sTauJetContainerName + "Tau EMPOverTrkSysP; EMPOverTrkSysP; # of Taus", 21, -1, 20);
+
+    m_HadRadius = Book1D("HadRadius",m_sTauJetContainerName + " Had Radius; HadRadius; # Part",20,0,2.);
+    m_EMRadius  = Book1D("EMRadius",m_sTauJetContainerName + " EM Radius; EMRadius; # Part",20,0,2.);
+    m_IsoFrac   = Book1D("IsoFrac",m_sTauJetContainerName + " Iso Frac; Iso Frac; # Part",20,0,1.);
 
 }
 
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/Had3ProngPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/Had3ProngPlots.cxx
index bccd482e37e..86e2db83fc6 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/Had3ProngPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/Had3ProngPlots.cxx
@@ -42,7 +42,7 @@ void Had3ProngPlots::initializePlots(){
 
   m_innerTrkAvgDist    = Book1D("innerTrkAvgDist",m_sTauJetContainerName + "Tau innerTrkAvgDist; innerTrkAvgDist; # of Taus", 10,-0.2,.8);
   m_ptRatioEflowApprox = Book1D("ptRatioEflowApprox",m_sTauJetContainerName + "Tau ptRatioEflowApprox; ptRatioEflowApprox; # of Taus", 10, 0, 10);
-  m_mEflowApprox       = Book1D("mEflowApprox",m_sTauJetContainerName + "Tau mEflowApprox; mEflowApprox; #Taus",30,0.0,3000.0);
+  m_mEflowApprox       = Book1D("mEflowApprox",m_sTauJetContainerName + "Tau mEflowApprox; mEflowApprox; #Taus",30,0,300);
   m_ChPiEMEOverCaloEME = Book1D("ChPiEMEOverCaloEME",m_sTauJetContainerName + "Tau ChPiEMEOverCaloEME; ChPiEMEOverCaloEME; # of Taus", 30, -15, 15);
   m_EMPOverTrkSysP     = Book1D("EMPOverTrkSysP",m_sTauJetContainerName + "Tau EMPOverTrkSysP; EMPOverTrkSysP; # of Taus", 21, -1, 20);
 
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx
index 17032bda135..1955adc11a2 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/Migration.cxx
@@ -8,8 +8,8 @@ namespace Tau{
 
 Migration::Migration(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName):
    PlotBase(pParent, sDir),
-   m_migration_panTau(nullptr),
-   m_migration_panTauProto(nullptr),
+   m_migration_tauRec(nullptr),
+   m_migration_eflow(nullptr),
    m_migration_cellBased(nullptr),
    m_sTauJetContainerName(sTauJetContainerName)
 {
@@ -19,141 +19,94 @@ Migration::~Migration()
 {
 }
 
-void Migration::initializePlots()
-{
-   m_migration_panTau = Book1D("panTau_migration",m_sTauJetContainerName + " panTau migration",DECAYSIZE,0,DECAYSIZE);
-   m_migration_panTauProto = Book1D("panTauProto_migration",m_sTauJetContainerName + " panTau proto migration",DECAYSIZE,0,DECAYSIZE);
-   m_migration_cellBased = Book1D("cellBased_migration",m_sTauJetContainerName + " cellBased migration",DECAYSIZE,0,DECAYSIZE);
-   m_migration_panTau->GetXaxis()->SetLabelSize(0.05);
-   m_migration_panTauProto->GetXaxis()->SetLabelSize(0.05);
-   m_migration_cellBased->GetXaxis()->SetLabelSize(0.05);
-   for(int i=1; i<= DECAYSIZE;i++){
-      m_migration_panTauProto->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
-      m_migration_panTau->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
-      m_migration_cellBased->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
-   }
-}
-   
-void Migration::fill(const xAOD::TauJet& thisTau,int nProng, int nNeu) {
-
-   // panTau
-   int isPanTauCandidate = 0;
-   bool foundDetail = thisTau.panTauDetail(xAOD::TauJetParameters::PanTauDetails::PanTau_isPanTauCandidate, isPanTauCandidate);
-   if ( !foundDetail || !isPanTauCandidate ) return;
-   
-   int decayMode = xAOD::TauJetParameters::DecayMode::Mode_Error;
-   foundDetail = thisTau.panTauDetail(xAOD::TauJetParameters::PanTauDetails::PanTau_DecayMode, decayMode);
-   if ( foundDetail ) decayModeFill(decayMode, nProng, nNeu, m_migration_panTau);	
-
-   decayMode = xAOD::TauJetParameters::DecayMode::Mode_Error;
-   foundDetail = thisTau.panTauDetail(xAOD::TauJetParameters::PanTauDetails::PanTau_DecayModeProto, decayMode);
-   if ( foundDetail ) decayModeFill(decayMode, nProng, nNeu, m_migration_panTauProto);	
-
-
-//RecTau
-   
+    void Migration::initializePlots(){
+	m_migration_tauRec = Book1D("tauRec_migration",m_sTauJetContainerName + " TauRec migration",DECAYSIZE,0,DECAYSIZE);
+	m_migration_eflow = Book1D("eflow_migration",m_sTauJetContainerName + " eflow migration",DECAYSIZE,0,DECAYSIZE);
+	m_migration_cellBased = Book1D("cellBased_migration",m_sTauJetContainerName + " cellBased migration",DECAYSIZE,0,DECAYSIZE);
+	for(int i=1; i<= DECAYSIZE;i++){
+	    m_migration_tauRec->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
+	    m_migration_eflow->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
+	    m_migration_cellBased->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
+	}
+    }
+    
+    void Migration::fill(const xAOD::TauJet& thisTau,int nProng, int nNeu) {
+	//RecTau
 	
-   
-   
-   /*+++++++++++++++++++++++++++++++++++++++++++++++++
-     +++++++++++++++++++CellBased+++++++++++++++++++++
-     +++++++++++++++++++++++++++++++++++++++++++++++++*/
-
-   
-   //Charged Pions
-   std::vector< ElementLink< xAOD::PFOContainer > > cellBased_chargedPFO = thisTau.protoChargedPFOLinks();
-   int cellP = cellBased_chargedPFO.size();
 	
-   
-   //Neutral Pions
-   int nPi0_tau = 0;
-   std::vector< ElementLink< xAOD::PFOContainer > > cellBased_neutralPFO = thisTau.protoNeutralPFOLinks();
-   std::vector< ElementLink< xAOD::PFOContainer > >::iterator first_cellBased_neutralPFO = cellBased_neutralPFO.begin();
-   std::vector< ElementLink< xAOD::PFOContainer > >::iterator last_cellBased_neutralPFO = cellBased_neutralPFO.end();
-   for (; first_cellBased_neutralPFO != last_cellBased_neutralPFO; ++first_cellBased_neutralPFO){
-      ElementLink<xAOD::PFOContainer> thisLink = *first_cellBased_neutralPFO;
-      const xAOD::PFO* thisPFO = *thisLink;
-      int myNPi0Proto = 0;
-      if(thisPFO->attribute(xAOD::PFODetails::nPi0Proto, myNPi0Proto)) nPi0_tau+=myNPi0Proto;
-      
-   } 
-   decayModeFill(nProng,nNeu,cellP,nPi0_tau,m_migration_cellBased);	
-   
-   
-   
-   /*+++++++++++++++++++++++++++++++++++++++++++++++++
-     +++++++++++++++++++Pantau+++++++++++++++++++++
-     +++++++++++++++++++++++++++++++++++++++++++++++++*/
-   
-}
-
-
-void Migration::decayModeFill(int trueMode, int recP, int recN,TH1 *histo)
-{
-   switch (trueMode) {
-   case xAOD::TauJetParameters::DecayMode::Mode_1p0n:
-      if      ( recP == 1 && recN == 0 ) histo->Fill(t10r10 + 0.5);
-      else if ( recP == 1 && recN == 1 ) histo->Fill(t10r11 + 0.5);
-      else if ( recP == 1 && recN >  1 ) histo->Fill(t10r1x + 0.5);
-      else if ( recP == 3 ) histo->Fill(t1r3 + 0.5);
-      break;
-   case xAOD::TauJetParameters::DecayMode::Mode_1p1n:
-      if      ( recP == 1 && recN == 0 ) histo->Fill(t11r10 + 0.5);
-      else if ( recP == 1 && recN == 1 ) histo->Fill(t11r11 + 0.5);
-      else if ( recP == 1 && recN >  1 ) histo->Fill(t11r1x + 0.5);
-      else if ( recP == 3 ) histo->Fill(t1r3 + 0.5);
-      break;
-   case xAOD::TauJetParameters::DecayMode::Mode_1pXn:
-      if      ( recP == 1 && recN == 0 ) histo->Fill(t1xr10 + 0.5);
-      else if ( recP == 1 && recN == 1 ) histo->Fill(t1xr11 + 0.5);
-      else if ( recP == 1 && recN >  1 ) histo->Fill(t1xr1x + 0.5);
-      else if ( recP == 3 ) histo->Fill(t1r3 + 0.5);
-      break;
-   case xAOD::TauJetParameters::DecayMode::Mode_3p0n:
-      if      ( recP == 3 && recN == 0 ) histo->Fill(t30r30 + 0.5);
-      else if ( recP == 3 && recN >= 1 ) histo->Fill(t30r3x + 0.5);
-      else if ( recP == 1 ) histo->Fill(t3r1 + 0.5);
-      break;
-   case xAOD::TauJetParameters::DecayMode::Mode_3pXn:
-      if      ( recP == 3 && recN == 0 ) histo->Fill(t3xr30 + 0.5);
-      else if ( recP == 3 && recN >= 1 ) histo->Fill(t3xr3x + 0.5);
-      else if ( recP == 1 ) histo->Fill(t3r1 + 0.5);
-      break;
-   }
-   return;
-}
-
-
-void Migration::decayModeFill(int trueP,int trueN,int recP, int recN,TH1 *histo){
-   if(recP == 1 && recN== 0){
-      if(trueP == 1 && trueN== 0) histo->Fill(t10r10 + 0.5);
-      if(trueP == 1 && trueN== 1) histo->Fill(t11r10 + 0.5);
-      if(trueP == 1 && trueN > 1) histo->Fill(t1xr10 + 0.5);
-      if(trueP == 3) histo->Fill(t3r1 + 0.5);
-   }
-   if(recP == 1 && recN== 1){
-      if(trueP == 1 && trueN== 0) histo->Fill(t10r11 + 0.5);
-      if(trueP == 1 && trueN== 1) histo->Fill(t11r11 + 0.5);
-      if(trueP == 1 && trueN > 1) histo->Fill(t1xr11 + 0.5);
-      if(trueP == 3 ) histo->Fill(t3r1 + 0.5);
-   }
-   if(recP == 1 && recN > 1){
-      if(trueP == 1 && trueN== 0) histo->Fill(t10r1x + 0.5);
-      if(trueP == 1 && trueN== 1) histo->Fill(t11r1x + 0.5);
-      if(trueP == 1 && trueN > 1) histo->Fill(t1xr1x + 0.5);
-      if(trueP == 3 ) histo->Fill(t3r1 + 0.5);
-   }
-   if(recP == 3 && recN== 0){
-      if(trueP == 1 ) histo->Fill(t1r3 + 0.5);
-      if(trueP == 3 && trueN== 0) histo->Fill(t30r30 + 0.5);
-      if(trueP == 3 && trueN>= 1) histo->Fill(t3xr30 + 0.5);
-   }
-   if(recP == 3 && recN>= 1){
-      if(trueP == 1 ) histo->Fill(t1r3 + 0.5);
-      if(trueP == 3 && trueN== 0) histo->Fill(t30r3x + 0.5);
-      if(trueP == 3 && trueN>= 1) histo->Fill(t3xr3x + 0.5);
-   }
-   return;
-}
+	
+	
+	/*+++++++++++++++++++++++++++++++++++++++++++++++++
+	  +++++++++++++++++++EFLOW_REC+++++++++++++++++++++
+	  +++++++++++++++++++++++++++++++++++++++++++++++++*/
+	
+	//Charged Pions
+      // FIXME!!! taujet v2 does no longer have eflowrec pfos
+	// std::vector< ElementLink< xAOD::PFOContainer > > eflowRec_chargedPFO = thisTau.eflowRec_Charged_PFOLinks();
+	// int efP = eflowRec_chargedPFO.size();
+	// //Neutral Pions
+	// std::vector< ElementLink< xAOD::PFOContainer > > eflowRec_neutralPFO = thisTau.eflowRec_Pi0_PFOLinks();
+	// int efN = eflowRec_neutralPFO.size();
+	// decayModeFill(nProng,nNeu,efP,efN,m_migration_eflow);
+	/*+++++++++++++++++++++++++++++++++++++++++++++++++
+	  +++++++++++++++++++CellBased+++++++++++++++++++++
+	  +++++++++++++++++++++++++++++++++++++++++++++++++*/
+	
+	//Charged Pions
+	std::vector< ElementLink< xAOD::PFOContainer > > cellBased_chargedPFO = thisTau.protoChargedPFOLinks();
+	int cellP = cellBased_chargedPFO.size();
 
+	
+	//Neutral Pions
+	int nPi0_tau = 0;
+	std::vector< ElementLink< xAOD::PFOContainer > > cellBased_neutralPFO = thisTau.protoNeutralPFOLinks();
+	std::vector< ElementLink< xAOD::PFOContainer > >::iterator first_cellBased_neutralPFO = cellBased_neutralPFO.begin();
+	std::vector< ElementLink< xAOD::PFOContainer > >::iterator last_cellBased_neutralPFO = cellBased_neutralPFO.end();
+	for (; first_cellBased_neutralPFO != last_cellBased_neutralPFO; ++first_cellBased_neutralPFO){
+	    ElementLink<xAOD::PFOContainer> thisLink = *first_cellBased_neutralPFO;
+	    const xAOD::PFO* thisPFO = *thisLink;
+	    int myNPi0Proto = 0;
+	    if(thisPFO->attribute(xAOD::PFODetails::nPi0Proto, myNPi0Proto)) nPi0_tau+=myNPi0Proto;
+	    
+	} 
+	decayModeFill(nProng,nNeu,cellP,nPi0_tau,m_migration_cellBased);	
+	
+	
+	
+	/*+++++++++++++++++++++++++++++++++++++++++++++++++
+	  +++++++++++++++++++Pantau+++++++++++++++++++++
+	  +++++++++++++++++++++++++++++++++++++++++++++++++*/
+	
+    }
+    void Migration::decayModeFill(int trueP,int trueN,int recP, int recN,TH1 *histo){
+	if(recP == 1 && recN== 0){
+	    if(trueP == 1 && trueN== 0) histo->Fill(t10r10 + 0.5);
+	    if(trueP == 1 && trueN== 1) histo->Fill(t11r10 + 0.5);
+	    if(trueP == 1 && trueN > 1) histo->Fill(t1xr10 + 0.5);
+	    if(trueP == 3) histo->Fill(t3r1 + 0.5);
+	}
+	if(recP == 1 && recN== 1){
+	    if(trueP == 1 && trueN== 0) histo->Fill(t10r11 + 0.5);
+	    if(trueP == 1 && trueN== 1) histo->Fill(t11r11 + 0.5);
+	    if(trueP == 1 && trueN > 1) histo->Fill(t1xr11 + 0.5);
+	    if(trueP == 3 ) histo->Fill(t3r1 + 0.5);
+	}
+	if(recP == 1 && recN > 1){
+	    if(trueP == 1 && trueN== 0) histo->Fill(t10r1x + 0.5);
+	    if(trueP == 1 && trueN== 1) histo->Fill(t11r1x + 0.5);
+	    if(trueP == 1 && trueN > 1) histo->Fill(t1xr1x + 0.5);
+	    if(trueP == 3 ) histo->Fill(t3r1 + 0.5);
+	}
+	if(recP == 3 && recN== 0){
+	    if(trueP == 1 ) histo->Fill(t1r3 + 0.5);
+	    if(trueP == 3 && trueN== 0) histo->Fill(t30r30 + 0.5);
+	    if(trueP == 3 && trueN>= 1) histo->Fill(t3xr30 + 0.5);
+	}
+	if(recP == 3 && recN>= 1){
+	    if(trueP == 1 ) histo->Fill(t1r3 + 0.5);
+	    if(trueP == 3 && trueN== 0) histo->Fill(t30r3x + 0.5);
+	    if(trueP == 3 && trueN>= 1) histo->Fill(t3xr3x + 0.5);
+	}
+	return;
+    }
 }
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/NewCorePlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/NewCorePlots.cxx
index 2f99d3d22a0..9cc2c23861e 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/NewCorePlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/NewCorePlots.cxx
@@ -79,7 +79,7 @@ void NewCorePlots::initializePlots(){
 
     m_innerTrkAvgDist                   = Book1D("innerTrkAvgDist",m_sTauJetContainerName + "Tau innerTrkAvgDist; innerTrkAvgDist; # of Taus",10,-0.2,.8);
     m_ptRatioEflowApprox                 = Book1D("ptRatioEflowApprox",m_sTauJetContainerName + "Tau ptRatioEflowApprox; ptRatioEflowApprox; # of Taus", 10, 0, 10);
-    m_mEflowApprox						= Book1D("mEflowApprox",m_sTauJetContainerName + "Tau mEflowApprox; mEflowApprox; #Taus",30,0.0,3000.0);
+    m_mEflowApprox						= Book1D("mEflowApprox",m_sTauJetContainerName + "Tau mEflowApprox; mEflowApprox; #Taus",30,0,300);
 }
 
 void NewCorePlots::fill(const xAOD::TauJet& tau) {
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/ParamPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/ParamPlots.cxx
index 5e7b3bc1e4e..aa60d52e261 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/ParamPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/ParamPlots.cxx
@@ -6,38 +6,34 @@
 
 namespace Tau{
 
-ParamPlots::ParamPlots(PlotBase* pParent, std::string sDir, std::string sParticleType)
-   : PlotBase(pParent, sDir),
-     eta(nullptr),
-     phi(nullptr),
-     pt(nullptr),
-     eta_phi(nullptr),
-     eta_pt(nullptr),
-     m_sParticleType(sParticleType)
+ParamPlots::ParamPlots(PlotBase* pParent, std::string sDir, std::string sParticleType):PlotBase(pParent, sDir),m_sParticleType(sParticleType)
 {
-}
+  eta=NULL;
+  phi=NULL;
+  pt=NULL;
 
-ParamPlots::~ParamPlots()
-{
+  eta_phi=NULL;
+  eta_pt=NULL;
 }
 
-void ParamPlots::initializePlots()
-{
-   pt  = Book1D("pt" , m_sParticleType+" pt;" +m_sParticleType+" Transverse Momentum [GeV];Entries / 1 GeV",200,0.,200);
-   eta = Book1D("eta", m_sParticleType+" eta;"+m_sParticleType+" Pseudo-Rapidity;Entries / 0.05", 32, -3.2, 3.2);
-   phi = Book1D("phi", m_sParticleType+" phi;"+m_sParticleType+" Azimuthal Angle;Entries / 0.05", 32, -3.2, 3.2);
-   eta_pt  = Book2D("eta_pt",m_sParticleType+" eta vs pt;"+m_sParticleType+" eta;"+m_sParticleType+" pt;Entries.0.05/1 GeV",32,-3.2,3.2,200,0.,200);
-   eta_phi = Book2D("eta_phi_test",m_sParticleType+" eta vs phi;"+m_sParticleType+" eta;"+m_sParticleType+" phi;Entries.0.05/0.5",32,-3.2,3.2,32,-3.2,3.2);
+
+void ParamPlots::initializePlots() {
+  pt  = Book1D("pt" , m_sParticleType+" pt;" +m_sParticleType+" Transverse Momentum [GeV];Entries / 1 GeV",200,0.,200);
+  eta = Book1D("eta", m_sParticleType+" eta;"+m_sParticleType+" Pseudo-Rapidity;Entries / 0.05", 32, -3.2, 3.2);
+  phi = Book1D("phi", m_sParticleType+" phi;"+m_sParticleType+" Azimuthal Angle;Entries / 0.05", 32, -3.2, 3.2);
+
+  eta_pt  = Book2D("eta_pt",m_sParticleType+" eta vs pt;"+m_sParticleType+" eta;"+m_sParticleType+" pt;Entries.0.05/1 GeV",32,-3.2,3.2,200,0.,200);
+  eta_phi = Book2D("eta_phi_test",m_sParticleType+" eta vs phi;"+m_sParticleType+" eta;"+m_sParticleType+" phi;Entries.0.05/0.5",32,-3.2,3.2,32,-3.2,3.2);
 }
 
-   
-void ParamPlots::fill(const xAOD::IParticle& tau)
-{
-   pt->Fill(tau.pt()*0.001);
-   eta->Fill(tau.eta());
-   phi->Fill(tau.phi());
-   eta_pt->Fill(tau.eta(),tau.pt()*0.001);
-   eta_phi->Fill(tau.eta(),tau.phi());
+
+void ParamPlots::fill(const xAOD::IParticle& tau){
+  pt->Fill(tau.pt()*0.001);
+  eta->Fill(tau.eta());
+  phi->Fill(tau.phi());
+
+  eta_pt->Fill(tau.eta(),tau.pt()*0.001);
+  eta_phi->Fill(tau.eta(),tau.phi());
 }
 
 }
diff --git a/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx b/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx
index 3c52bba569b..da56580e04e 100644
--- a/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx
+++ b/PhysicsAnalysis/TauID/TauHistUtils/src/RecoTauPlots.cxx
@@ -9,6 +9,15 @@ namespace Tau{
 RecoTauPlots::RecoTauPlots(PlotBase* pParent, std::string sDir, std::string sTauJetContainerName):
    PlotBase(pParent, sDir),
    m_oParamPlots(this, "", sTauJetContainerName),
+   m_eflowRec_charPFO_Pt(nullptr),
+   m_eflowRec_charPFO_Eta(nullptr),
+   m_eflowRec_charPFO_Phi(nullptr),
+   m_eflowRec_charPFO_E(nullptr),
+   m_eflowRec_neuPFO_Pt(nullptr),
+   m_eflowRec_neuPFO_Eta(nullptr),
+   m_eflowRec_neuPFO_Phi(nullptr),
+   m_eflowRec_neuPFO_E(nullptr),
+   m_eflowRec_neuPFO_bdtPi0Score(nullptr),
    m_cellBased_charPFO_Pt(nullptr),
    m_cellBased_charPFO_Eta(nullptr),
    m_cellBased_charPFO_Phi(nullptr),
@@ -33,6 +42,20 @@ RecoTauPlots::RecoTauPlots(PlotBase* pParent, std::string sDir, std::string sTau
    m_pantau_CellBasedInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts(nullptr),
    m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed(nullptr),
    m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged(nullptr),
+   m_pantau_eflowRecInput_isPanTauCandidate(nullptr),
+   m_pantau_eflowRecInput_DecayMode(nullptr),
+   m_pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n(nullptr),
+   m_pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn(nullptr),
+   m_pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts(nullptr),
+   m_pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged(nullptr),
    m_id_BDTJetScore(nullptr),
    m_id_BDTEleScore(nullptr),
    m_sTauJetContainerName(sTauJetContainerName)
@@ -48,6 +71,22 @@ void RecoTauPlots::initializePlots(){
     //  m_oParamPlots.initialize();
 
 
+    /*+++++++++++++++++++++++++++++++++++++++++++++++++
+      +++++++++++++++++++EFLOW_REC+++++++++++++++++++++
+      +++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+	// m_eflowRec_charPFO_Pt      = Book1D("eflowRec_PFO_c_Pt",m_sTauJetContainerName + " Charged PFO pt; pt; # PFO",200,0.,200000.);
+	// m_eflowRec_charPFO_Eta      = Book1D("eflowRec_PFO_c_Eta",m_sTauJetContainerName + " Charged PFO eta; eta; # PFO",128,-3.2,3.2);
+	// m_eflowRec_charPFO_Phi      = Book1D("eflowRec_PFO_c_Phi",m_sTauJetContainerName + " Charged PFO phi; phi; # PFO",128,-3.2,3.2);
+	// m_eflowRec_charPFO_E      = Book1D("eflowRec_PFO_c_E",m_sTauJetContainerName + " Charged PFO E; E; # PFO",200,0.,200000.);
+	// m_eflowRec_neuPFO_Pt      = Book1D("eflowRec_PFO_n_Pt",m_sTauJetContainerName + " Neutral PFO pt; pt; # PFO",200,0.,200000.);
+	// m_eflowRec_neuPFO_Eta      = Book1D("eflowRec_PFO_n_Eta",m_sTauJetContainerName + " Neutral PFO eta; eta; # PFO",128,-3.2,3.2);
+	// m_eflowRec_neuPFO_Phi      = Book1D("eflowRec_PFO_n_Phi",m_sTauJetContainerName + " Neutral PFO phi; phi; # PFO",128,-3.2,3.2);
+	// m_eflowRec_neuPFO_E      = Book1D("eflowRec_PFO_n_E",m_sTauJetContainerName + " Neutral PFO E; E; # PFO",200,0.,200000.);
+	// m_eflowRec_neuPFO_bdtPi0Score = Book1D("eflowRec_PFO_n_bdtPi0Score",m_sTauJetContainerName + " Neutral PFO BDT Pi0 Score; Score; # PFO",60,-.6,.6);
+
+
     /*+++++++++++++++++++++++++++++++++++++++++++++++++
       +++++++++++++++++++CellBased+++++++++++++++++++++
       +++++++++++++++++++++++++++++++++++++++++++++++++*/
@@ -58,7 +97,7 @@ void RecoTauPlots::initializePlots(){
 	m_cellBased_charPFO_E      = Book1D("cellBased_PFO_c_E",m_sTauJetContainerName + " Charged PFO E; E; # PFO",200,0.,200000.);
 	m_cellBased_neuPFO_Pt      = Book1D("cellBased_PFO_n_Pt",m_sTauJetContainerName + " Neutral PFO pt; pt; # PFO",200,0.,200000.);
 	m_cellBased_neuPFO_Eta      = Book1D("cellBased_PFO_n_Eta",m_sTauJetContainerName + " Neutral PFO eta; eta; # PFO",128,-3.2,3.2);
-	m_cellBased_neuPFO_Phi      = Book1D("cellBased_PFO_n_Phi",m_sTauJetContainerName + " Neutral PFO phi; phi; # PFO",64,-3.2,3.2);
+	m_cellBased_neuPFO_Phi      = Book1D("cellBased_PFO_n_Phi",m_sTauJetContainerName + " Neutral PFO phi; phi; # PFO",128,-3.2,3.2);
 	m_cellBased_neuPFO_E      = Book1D("cellBased_PFO_n_E",m_sTauJetContainerName + " Neutral PFO E; E; # PFO",200,0.,200000.);
 	m_cellBased_neuPFO_bdtPi0Score = Book1D("cellBased_PFO_n_bdtPi0Score",m_sTauJetContainerName + " Neutral PFO BDT Pi0 Score; Score; # PFO",60,-1.0,1.0);
 
@@ -82,12 +121,57 @@ void RecoTauPlots::initializePlots(){
 	m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed = Book1D("pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed",10,-0.5,9.5);
 	m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged = Book1D("pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",m_sTauJetContainerName + "pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",30,0.,0.6);
 
+	m_pantau_eflowRecInput_isPanTauCandidate = Book1D("pantau_eflowRecInput_isPanTauCandidate",m_sTauJetContainerName + "pantau_eflowRecInput_isPanTauCandidate",2,0,2);
+	m_pantau_eflowRecInput_DecayMode = Book1D("pantau_eflowRecInput_DecayMode",m_sTauJetContainerName + "pantau_eflowRecInput_DecayMode",6,-0.5,5.5);
+	m_pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n = Book1D("pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n",m_sTauJetContainerName + "pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n",30,-1.,1.);
+	m_pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn = Book1D("pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn",m_sTauJetContainerName + "pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn",30,-1.,1.);
+	m_pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn = Book1D("pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn",m_sTauJetContainerName + "pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn",30,-1.,1.);
+	m_pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts = Book1D("pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts",10.,-0.5,9.5);
+	m_pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts = Book1D("pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts",10.,-0.5,9.5);
+	m_pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts = Book1D("pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts",30,0.,1.);
+	m_pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM = Book1D("pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM",30,0.,6.);
+	m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1 = Book1D("pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1",30,-1.5,1.5);
+	m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2 = Book1D("pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2",30,-1.5,1.5);
+	m_pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts = Book1D("pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts",30,-0.5,1.2);
+	m_pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts = Book1D("pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts",30,-0.5,1.2);
+	m_pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged = Book1D("pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",m_sTauJetContainerName + "pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged",30,0.,0.6);
   }
     
     void RecoTauPlots::fill(const xAOD::TauJet& thisTau) {
 
 	//Access Particle Flow Object
 
+	/*+++++++++++++++++++++++++++++++++++++++++++++++++
+      +++++++++++++++++++EFLOW_REC+++++++++++++++++++++
+      +++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+    //Charged Pions
+    // std::vector< ElementLink< xAOD::PFOContainer > > eflowRec_chargedPFO = thisTau.eflowRec_Charged_PFOLinks();
+    // std::vector< ElementLink< xAOD::PFOContainer > >::iterator first_eflowRec_chargedPFO = eflowRec_chargedPFO.begin();
+    // std::vector< ElementLink< xAOD::PFOContainer > >::iterator last_eflowRec_chargedPFO = eflowRec_chargedPFO.end();
+
+    // for (; first_eflowRec_chargedPFO != last_eflowRec_chargedPFO; ++first_eflowRec_chargedPFO){
+    //   ElementLink<xAOD::PFOContainer> thisLink = *first_eflowRec_chargedPFO;
+    //   const xAOD::PFO* thisPFO = *thisLink;
+    //   m_eflowRec_charPFO_Pt->Fill( thisPFO->pt()); 
+    //   m_eflowRec_charPFO_Eta->Fill( thisPFO->eta()); 
+    //   m_eflowRec_charPFO_Phi->Fill( thisPFO->phi()); 
+    //   m_eflowRec_charPFO_E->Fill( thisPFO->e());  
+    // } 
+    
+    // //Neutral Pions
+    // std::vector< ElementLink< xAOD::PFOContainer > > eflowRec_neutralPFO = thisTau.eflowRec_Neutral_PFOLinks();
+    // std::vector< ElementLink< xAOD::PFOContainer > >::iterator first_eflowRec_neutralPFO = eflowRec_neutralPFO.begin();
+    // std::vector< ElementLink< xAOD::PFOContainer > >::iterator last_eflowRec_neutralPFO = eflowRec_neutralPFO.end();
+    // for (; first_eflowRec_neutralPFO != last_eflowRec_neutralPFO; ++first_eflowRec_neutralPFO){
+    //   ElementLink<xAOD::PFOContainer> thisLink = *first_eflowRec_neutralPFO;
+    //   const xAOD::PFO* thisPFO = *thisLink;
+    //   m_eflowRec_neuPFO_Pt->Fill( thisPFO->pt()); 
+    //   m_eflowRec_neuPFO_Eta->Fill( thisPFO->eta()); 
+    //   m_eflowRec_neuPFO_Phi->Fill( thisPFO->phi()); 
+    //   m_eflowRec_neuPFO_E->Fill( thisPFO->e());  
+    //   m_eflowRec_neuPFO_bdtPi0Score->Fill(thisPFO->bdtPi0Score());
+    // } 
 
     /*+++++++++++++++++++++++++++++++++++++++++++++++++
       +++++++++++++++++++CellBased+++++++++++++++++++++
@@ -161,6 +245,35 @@ void RecoTauPlots::initializePlots(){
     m_pantau_CellBasedInput_BDTVar_Neutral_Shots_NPhotonsInSeed->Fill(panTauFloat);
     thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::PanTau_BDTVar_Combined_DeltaR1stNeutralTo1stCharged,panTauFloat);
     m_pantau_CellBasedInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_isPanTauCandidate,panTauIntiger);
+    // m_pantau_eflowRecInput_isPanTauCandidate->Fill(panTauIntiger);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_DecayMode,panTauIntiger);
+    // m_pantau_eflowRecInput_DecayMode->Fill(panTauIntiger);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n,panTauFloat);
+    // m_pantau_eflowRecInput_BDTValue_1p0n_vs_1p1n->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn,panTauFloat);
+    // m_pantau_eflowRecInput_BDTValue_1p1n_vs_1pXn->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn,panTauFloat);
+    // m_pantau_eflowRecInput_BDTValue_3p0n_vs_3pXn->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts,panTauIntiger);
+    // m_pantau_eflowRecInput_BDTVar_Basic_NPi0NeutConsts->Fill(panTauIntiger);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts,panTauIntiger);
+    // m_pantau_eflowRecInput_BDTVar_Basic_NNeutralConsts->Fill(panTauIntiger);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Charged_Ratio_EtOverEtAllConsts->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Neutral_HLV_SumM->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_EtSort_1->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Neutral_PID_BDTValues_BDTSort_2->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Neutral_Ratio_EtOverEtAllConsts->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Neutral_Mean_DRToLeading_WrtEtAllConsts->Fill(panTauFloat);
+    // thisTau.panTauDetail( xAOD::TauJetParameters::PanTauDetails::pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged,panTauFloat);
+    // m_pantau_eflowRecInput_BDTVar_Combined_DeltaR1stNeutralTo1stCharged->Fill(panTauFloat);
+
  
     m_oParamPlots.fill(thisTau);
   }
-- 
GitLab