diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py
index 2c74d33e274a193deb20681d96e5295bcea80369..9dddcfb1025dfeea27bc9b622c7be1e5f1f4e4ea 100644
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py
@@ -2,8 +2,27 @@
 
 monitoring_singleTau = 'tau25_medium1_tracktwo'
 
-
 monitoring_tau = [
+                  'tau0_perf_ptonly_L1TAU12',
+                  'tau0_perf_ptonly_L1TAU60',
+                  'tau25_idperf_track',
+                  'tau25_idperf_tracktwo',
+                  'tau25_perf_tracktwo',
+                  'tau25_medium1_tracktwo',
+                  'tau35_perf_tracktwo_tau25_perf_tracktwo',
+                  'tau35_medium1_tracktwo_tau25_medium1_tracktwo',
+                  'mu14_iloose_tau25_perf_tracktwo',
+                  'tau160_idperf_track',
+                  'tau160_idperf_tracktwo',
+                  'tau160_perf_tracktwo',
+                  'tau160_medium1_tracktwo',
+                  'tau1_cosmic_track_L1MU4_EMPTY',
+                  'tau1_cosmic_ptonly_L1MU4_EMPTY',
+                  'tau8_cosmic_ptonly',
+                  'tau8_cosmic_track'
+        ]
+
+monitoring_tau_pp = [
                   'tau0_perf_ptonly_L1TAU12',
                   'tau0_perf_ptonly_L1TAU60',
 		  'tau25_idperf_track',
@@ -11,5 +30,35 @@ monitoring_tau = [
 		  'tau25_perf_tracktwo',
                   'tau25_medium1_tracktwo',
                   'tau35_perf_tracktwo_tau25_perf_tracktwo',
-                  'mu14_iloose_tau25_perf_tracktwo'
+                  'tau35_medium1_tracktwo_tau25_medium1_tracktwo',
+                  'mu14_iloose_tau25_perf_tracktwo',
+                  'tau160_idperf_track',
+                  'tau160_idperf_tracktwo',
+                  'tau160_perf_tracktwo',
+                  'tau160_medium1_tracktwo'
 	]
+
+monitoring_tau_cosmic = [
+    'tau1_cosmic_track_L1MU4_EMPTY',
+    'tau1_cosmic_ptonly_L1MU4_EMPTY',
+    'tau8_cosmic_ptonly',
+    'tau8_cosmic_track'
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py
index 07ec1a9a3a8dcd1ec873ccd67a52a72f2911a8f1..ecd2330e5ffb75fc723d8fdfbc0b9158e0f40871 100644
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py
@@ -1,6 +1,5 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
-
 def TrigTauMonitoringTool():
 
 	full_tau = [
@@ -94,7 +93,7 @@ def TrigTauMonitoringTool():
                   # High-threshold
                   'e17_medium_tau80_medium1_tracktwo',
                   'e17_lhmedium_tau80_medium1_tracktwo',
-                  'e17_medium_tau80_medium1_tracktwo_L1EM15-TAU40',
+		  'e17_medium_tau80_medium1_tracktwo_L1EM15-TAU40',
                   'e17_lhmedium_tau80_medium1_tracktwo_L1EM15-TAU40',
                   
                   # Tau + Muon
@@ -130,20 +129,24 @@ def TrigTauMonitoringTool():
                   # Tau + mu + MET
                   'mu14_tau25_medium1_tracktwo_xe50',
                   'mu14_iloose_tau25_medium1_tracktwo_xe50'
-                  
+                 
                   
         ]
 
 
 	# Setup emulation 
 	emul_l1_tau = [ 
-		'L1_TAU60',
-		'L1_EM15HI_2TAU12IM_J25_3J12',
-		'L1_TAU20IM_2TAU12IM',
-		'L1_TAU20IM_2TAU12IM_J25_2J20_3J12',
-		'L1_MU10_TAU12IM_J25_2J12',
-		'L1_TAU20_2TAU12_XE35',
-		'L1_TAU20_2J20_XE45'
+        'L1_EM15HI_2TAU12IM',
+        'L1_EM15HI_2TAU12IM_J25_3J12',
+        'L1_EM15HI_2TAU12IM_XE35',
+        'L1_MU10_TAU12IM',
+        'L1_MU10_TAU12IM_J25_2J12',
+        'L1_MU10_TAU12IM_XE35',
+        'L1_TAU20IM_2J20_XE45',
+        'L1_TAU20IM_2TAU12IM',
+        'L1_TAU20IM_2TAU12IM_J25_2J20_3J12',
+        'L1_TAU20IM_2TAU12IM_XE35',
+        'L1_TAU60'
 	]
 
 	emul_hlt_tau = [
@@ -162,15 +165,25 @@ def TrigTauMonitoringTool():
 		'L1_TAU20IM_2TAU12IM_J25_2J20_3J12'
 	]
 
-	tau_track_test = [
-		'tau25_perf_track_emulate',
-		'tau25_perf_tracktwo_emulate',
-                'tau25_perf_track_ptmin_emulate',
-                'tau25_perf_tracktwo_ptmin_emulate',
-                'tau25_medium1_track_ptmin_emulate',
-                'tau25_medium1_tracktwo_ptmin_emulate',
-                'tau25_perf_tracktwo_ptmin_no0reject_emulate',
-                'tau25_medium1_tracktwo_ptmin_no0reject_emulate'
+#	tau_track_test = [
+#		'tau25_perf_track_emulate',
+#		'tau25_perf_tracktwo_emulate',
+#                'tau25_perf_track_ptmin_emulate',
+#                'tau25_perf_tracktwo_ptmin_emulate',
+#                'tau25_medium1_track_ptmin_emulate',
+#                'tau25_medium1_tracktwo_ptmin_emulate',
+#                'tau25_perf_tracktwo_ptmin_no0reject_emulate',
+#                'tau25_medium1_tracktwo_ptmin_no0reject_emulate'
+#	]
+
+	highpt_tau = [
+                'tau80_medium1_tracktwo',
+                'tau80_medium1_tracktwo_L1TAU60',
+                'tau80_medium1_tracktwo_L1TAU60_tau50_medium1_tracktwo_L1TAU12',
+                'tau125_medium1_tracktwo',
+                'tau125_medium1_tracktwo_tau50_medium1_tracktwo_L1TAU12',
+		'tau125_perf_ptonly',
+                'tau125_perf_tracktwo',
 	]
 
 	# get the Level1 Emulation tool from the emulation python config
@@ -196,18 +209,21 @@ def TrigTauMonitoringTool():
 				  primary_tau		 = [], #full_tau, #[]
 				  prescaled_tau		 = [], #tau_track_test, #[],
 				  LowestSingleTau 	 = hltmonList.monitoring_singleTau, #"tau25_medium1_tracktwo",
+				  highpt_tau             = highpt_tau,
 				  EffOffTauPtCut	 = 20000.,  #MeV
 				  TurnOnCurves           = True,
 				  TurnOnCurvesDenom	 = "RecoID", # combined string with combination of "Truth", "Reco", "ID" and "Presel". For Truth doTruth=True!
 				  doTruth		 = False,
 				  doRealZtautauEff       = False,
+				  dodijetFakeTausEff     = False,
 				  doBootstrap		 = False,
-				  doEmulation		 = False,
+				  doEmulation		 = True,
 				  emulation_l1_tau       = emul_l1_tau,
 				  emulation_hlt_tau      = emul_hlt_tau,
 				  L1EmulationTool        = Level1Emulator,
 #				  HltEmulationTool       = HltEmulator,
-				  doTestTracking	 = False,
+				  doTrackCurves		 = False,
+#				  doTestTracking	 = False,
 				  topo_chains            = tau_topo_chains,
                                   topo_support_chains    = tau_topo_support_chains,
 				  doTopoValidation	 = False,
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx
index 02ea19ce7812417bf5ef6153ad842b79abc6e632..97271dce46d533a4048a9ec91c65e339203f4713 100755
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx
@@ -108,18 +108,21 @@ HLTTauMonTool::HLTTauMonTool(const std::string & type, const std::string & n, co
     declareProperty("primary_tau", 		m_primary_tau);
     declareProperty("monitoring_tau", 		m_monitoring_tau);
     declareProperty("prescaled_tau", 		m_prescaled_tau);
+    declareProperty("highpt_tau",               m_highpt_tau);
     declareProperty("EffOffTauPtCut", 		m_effOffTauPtCut=20000.);
     declareProperty("TurnOnCurves", 		m_turnOnCurves=true);
     declareProperty("TurnOnCurvesDenom",        m_turnOnCurvesDenom="RecoID");
     declareProperty("doTruth", 			m_truth=false);
     declareProperty("doRealZtautauEff",		m_RealZtautauEff=false);
+    declareProperty("dodijetFakeTausEff",       m_dijetFakeTausEff=false);
     declareProperty("doBootstrap",              m_bootstrap=true);
     declareProperty("doEmulation",         	m_emulation=false, "boolean to switch on emulation");
     declareProperty("emulation_l1_tau",         m_emulation_l1_tau, "List of L1 chains to emulate");    
     declareProperty("emulation_hlt_tau",        m_emulation_hlt_tau, "List of HLT chains to emulate");
     declareProperty("L1EmulationTool",          m_l1emulationTool, "Handle to the L1 emulation tool");
     //declareProperty("HltEmulationTool", 	m_hltemulationTool,  "Handle to the HLT emulation tool");
-    declareProperty("doTestTracking", 		m_doTestTracking=false);
+    declareProperty("doTrackCurves",            m_doTrackCurves=false, "Efficiency plots of track distributions");
+    //declareProperty("doTestTracking", 		m_doTestTracking=false);
     declareProperty("doTopoValidation",         m_doTopoValidation=false);
     declareProperty("topo_chains",              m_topo_chains);
     declareProperty("topo_support_chains",      m_topo_support_chains);
@@ -160,6 +163,9 @@ StatusCode HLTTauMonTool::init() {
     for(std::vector<std::string>::iterator it = m_prescaled_tau.begin(); it != m_prescaled_tau.end(); ++it) {
         m_trigItems.push_back(*it);
     }
+    for(std::vector<std::string>::iterator it = m_highpt_tau.begin(); it != m_highpt_tau.end(); ++it) {
+      m_trigItemsHighPt.push_back(*it);
+    }
 
 //   ATH_MSG_WARNING("Retrieving HLT tau chains");
 //   const Trig::ChainGroup* m_allHLTTauItems = getTDT()->getChainGroup(".*");
@@ -206,20 +212,20 @@ StatusCode HLTTauMonTool::fill() {
     ATH_MSG_DEBUG(" ====== Begin fillHists() ====== ");
     StatusCode sc;
  
-    if(!m_trigItemsAll.size()){ 
-      ATH_MSG_DEBUG("Retrieving HLT tau chains");
-      const Trig::ChainGroup* m_allHLTTauItems = getTDT()->getChainGroup("HLT_.*tau.*");
-      m_trigItemsAll = m_allHLTTauItems->getListOfTriggers();
-      ATH_MSG_DEBUG("Retrieved "<< m_trigItemsAll.size() << " chains");
-      for(unsigned int i=0;i<m_trigItemsAll.size();++i){
-        ATH_MSG_DEBUG("ChainGroup "<< m_trigItemsAll.at(i).c_str());
-       }
+//    if(!m_trigItemsAll.size()){ 
+//      ATH_MSG_DEBUG("Retrieving HLT tau chains");
+//      const Trig::ChainGroup* m_allHLTTauItems = getTDT()->getChainGroup("HLT_.*tau.*");
+//      m_trigItemsAll = m_allHLTTauItems->getListOfTriggers();
+//      ATH_MSG_DEBUG("Retrieved "<< m_trigItemsAll.size() << " chains");
+//      for(unsigned int i=0;i<m_trigItemsAll.size();++i){
+//        ATH_MSG_DEBUG("ChainGroup "<< m_trigItemsAll.at(i).c_str());
+//       }
 //      for(unsigned int j=0;j<m_trigItems.size();++j){
 //        bool activeChain(false);
 //	for(unsigned int i=0;i<m_trigItemsAll.size();++i) if("HLT_"+m_trigItems.at(j) == m_trigItemsAll.at(i)) activeChain = true;
 //	if(!activeChain && m_trigItems.at(j)!="Dump") ATH_MSG_WARNING("trigger chain " << m_trigItems.at(j) << " not active! skipping");
 //      }
-    }
+//   }
 
  
     for(unsigned int j=0;j<m_trigItems.size();++j)
@@ -231,21 +237,42 @@ StatusCode HLTTauMonTool::fill() {
         const unsigned int TBP_bit = getTDT()->isPassedBits(trig_item_L1);
 	if(TBP_bit & TrigDefs::L1_isPassedBeforePrescale) hist("hL1TBPCounts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.);
 
-	bool activeChain(false);
-	for(unsigned int i=0;i<m_trigItemsAll.size();++i) if("HLT_"+m_trigItems.at(j) == m_trigItemsAll.at(i)) activeChain = true;
-	if(m_trigItems.at(j).find("emulate")!=std::string::npos) activeChain = true;
-	if(!activeChain && m_trigItems.at(j)!="Dump"){ATH_MSG_DEBUG("trigger chain " << m_trigItems.at(j) << " not active! skipping");}
-	else {
-		std::string trig_item_EF = "HLT_"+m_trigItems.at(j);
-		std::string trig_item_L1(LowerChain( trig_item_EF ) );
+//	bool activeChain(false);
+//	for(unsigned int i=0;i<m_trigItemsAll.size();++i) if("HLT_"+m_trigItems.at(j) == m_trigItemsAll.at(i)) activeChain = true;
+//	if(!activeChain && m_trigItems.at(j)!="Dump"){ATH_MSG_DEBUG("trigger chain " << m_trigItems.at(j) << " not active! skipping");}
+//	else {
+//		std::string trig_item_EF = "HLT_"+m_trigItems.at(j);
+//		std::string trig_item_L1(LowerChain( trig_item_EF ) );
 
-		if ( getTDT()->isPassed(trig_item_L1,m_L1TriggerCondition) ) hist("hL1Counts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.);
-		if ( getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition) ) hist("hHLTCounts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.);  
+	if ( getTDT()->isPassed(trig_item_L1,m_L1TriggerCondition) ) hist("hL1Counts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.);
+	if ( getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition) ) hist("hHLTCounts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.);  
 		//testL1TopoNavigation(m_trigItems[j]);
 		//testPrescaleRetrieval(m_trigItems[j]);
-		sc = fillHistogramsForItem(m_trigItems[j]);
-		if(sc.isFailure()){ ATH_MSG_WARNING("Failed at fillHistogramsForItem. Exiting!"); return StatusCode::FAILURE;}       	
-    	}	 
+	sc = fillHistogramsForItem(m_trigItems[j]);
+	if(sc.isFailure()){ ATH_MSG_WARNING("Failed at fillHistogramsForItem. Exiting!"); return StatusCode::FAILURE;} 
+	if(m_doTrackCurves){
+		sc = trackCurves (m_trigItems[j]);
+		if(sc.isFailure()){ ATH_MSG_WARNING("Failed trackCurves(). Exiting!"); return StatusCode::FAILURE;}
+	}
+//      	}      		 
+
+//	if(trig_item_L1=="L1_TAU20IM_2TAU12IM_J25_2J20_3J12"){
+//
+//		const xAOD::JetContainer * jet_cont = 0;
+//		if(evtStore()->retrieve(jet_cont, "AntiKt4EMTopoJets").isFailure())
+//	  	{
+//	    		ATH_MSG_WARNING("Failed to retrieve AntiKt4EMTopoJets container. Exiting.");
+//	    		return StatusCode::FAILURE;
+//	  	}
+//		float maxPt=0;
+//		xAOD::JetContainer::const_iterator jetItr, jet_cont_end = jet_cont->end();
+//		for(jetItr=jet_cont->begin(); jetItr!=jet_cont_end; ++jetItr){
+//	    		if((*jetItr)->pt()>maxPt) maxPt=(*jetItr)->pt();
+//		}
+//		setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
+//	    	if(getTDT()->isPassed("L1_TAU20IM_2TAU12IM_J25_2J20_3J12",m_L1TriggerCondition)) profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,1);
+//		else if(getTDT()->isPassed("L1_TAU20IM_2TAU12IM",m_L1TriggerCondition)) profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,0);
+//    	}
     }
 
     if(m_doTopoValidation){
@@ -266,10 +293,16 @@ StatusCode HLTTauMonTool::fill() {
         sc = RealZTauTauEfficiency();
         if(sc.isFailure()){ ATH_MSG_WARNING("Failed RealZTauTauEfficiency(). Exiting!"); return StatusCode::FAILURE;}
       }
-    
-    if(m_doTestTracking){ sc = test2StepTracking();
-      if(sc.isFailure()){ ATH_MSG_WARNING("Failed at test2Steptracking. Exiting!"); return StatusCode::FAILURE;}
-    }
+
+    if(m_dijetFakeTausEff)
+      {
+        sc = dijetFakeTausEfficiency();
+        if(sc.isFailure()){ ATH_MSG_WARNING("Failed dijetFakeTausEfficiency(). Exiting!"); return StatusCode::FAILURE;}
+      }
+  
+    //if(m_doTestTracking){ sc = test2StepTracking();
+    //  if(sc.isFailure()){ ATH_MSG_WARNING("Failed at test2Steptracking. Exiting!"); return StatusCode::FAILURE;}
+    //}
     return sc;
     //ATH_MSG_DEBUG(" ====== End fillHists() ====== ");
     
@@ -376,11 +409,19 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){
          ATH_MSG_DEBUG("No features for chain " << trig_item_L1);
          hist("hL1CountsDebug","HLT/TauMon/Expert")->Fill(trigItem.c_str(),1.);
        }
+       else ATH_MSG_DEBUG("The chain " << trig_item_L1 << " has " << f.getCombinations().size() << " combinations");
+
+
+       std::vector< uint32_t > tau_roIWord;
+       std::vector< float > tau_roi_eta;
+       std::vector< float > tau_roi_phi;
+       std::vector< uint32_t > jet_roIWord;
        for(;comb!=combEnd;++comb){
 
          const std::vector< Trig::Feature<TrigRoiDescriptor> > vec_roi = comb->get<TrigRoiDescriptor>("initialRoI",m_L1TriggerCondition);
          std::vector< Trig::Feature<TrigRoiDescriptor> >::const_iterator roi = vec_roi.begin(), roi_e = vec_roi.end();
-
+         ATH_MSG_DEBUG("Combination with " << vec_roi.size() << "RoIs");
+	 
          const xAOD::EmTauRoIContainer* l1Tau_cont = 0;
          if ( m_storeGate->retrieve( l1Tau_cont, "LVL1EmTauRoIs").isFailure() ){ // retrieve arguments: container type, container key
            ATH_MSG_WARNING("Failed to retrieve LVL1EmTauRoI container. Exiting.");
@@ -394,14 +435,23 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){
          for(roi = vec_roi.begin(); roi != roi_e; ++roi)
            if(roi->cptr()){
              for(itEMTau = l1Tau_cont->begin(); itEMTau!=itEMTau_e; ++itEMTau){
-     	       if(roi->cptr()->roiWord()!=(*itEMTau)->roiWord()) continue;
-     	       if(!Selection(*itEMTau)) continue;
-               setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI");
-               sc = fillL1Tau(*itEMTau);
-               if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI histo. Exiting!"); return StatusCode::FAILURE;}
-               setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1VsOffline");
-               sc = fillL1TauVsOffline(*itEMTau);
-               if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1VsOffline histo. Exiting!"); return StatusCode::FAILURE;}
+     	       if(roi->cptr()->roiWord()==(*itEMTau)->roiWord()){
+     	         if(!Selection(*itEMTau)) continue;
+                 bool newRoI=true;
+		 for(unsigned int l1tau=0;l1tau<tau_roIWord.size();l1tau++) if(roi->cptr()->roiWord()==tau_roIWord.at(l1tau)) newRoI=false;
+                 if(!newRoI) break; 
+                 tau_roIWord.push_back(roi->cptr()->roiWord()); 
+                 tau_roi_eta.push_back((*itEMTau)->eta());
+                 tau_roi_phi.push_back((*itEMTau)->phi());
+          	 ATH_MSG_DEBUG("Found RoI in (" << (*itEMTau)->eta() << "," << (*itEMTau)->phi() <<")");
+                 setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI");
+                 sc = fillL1Tau(*itEMTau);
+                 if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI histo. Exiting!"); return StatusCode::FAILURE;}
+                 setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1VsOffline");
+                 sc = fillL1TauVsOffline(*itEMTau);
+                 if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1VsOffline histo. Exiting!"); return StatusCode::FAILURE;}
+		 break;
+               }
              }
            }
 
@@ -420,22 +470,23 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){
 	  
 	  for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){
 		for(itJetRoI = l1jets->begin(); itJetRoI!=itJetRoI_e; ++itJetRoI){
-			if(roi->cptr()->roiWord()!=(*itJetRoI)->roiWord()) continue;
-			bool isAlsoEMTauRoI = false;
-			for(roi1 = vec_roi.begin(); roi1 != roi1_e; ++roi1) if(roi1->cptr()){
-             			for(itEMTau = l1Tau_cont->begin(); itEMTau!=itEMTau_e; ++itEMTau){
-               				if(roi1->cptr()->roiWord()!=(*itEMTau)->roiWord()) continue;
-					if(deltaR((*itEMTau)->eta(), (*itJetRoI)->eta(), (*itEMTau)->phi(), (*itJetRoI)->phi())<0.3 ) isAlsoEMTauRoI = true;	
-				}
+			if(roi->cptr()->roiWord()==(*itJetRoI)->roiWord()){ // found jet RoI
+			  bool isAlsoEMTauRoI = false;
+                          for(unsigned int l1tau = 0; l1tau<tau_roIWord.size();l1tau++) if(roi->cptr()->roiWord()==tau_roIWord.at(l1tau)) {isAlsoEMTauRoI = true; break;}
+			  if(isAlsoEMTauRoI) break; // skip, it's a tau RoI
+                          bool newRoI=true;
+                          for(unsigned int l1jet=0;l1jet<jet_roIWord.size();l1jet++) if(roi->cptr()->roiWord()==jet_roIWord.at(l1jet)) newRoI=false;
+                          if(!newRoI) break;
+                          jet_roIWord.push_back(roi->cptr()->roiWord());
+			  ATH_MSG_DEBUG("Found L1 Jet RoI in chain " << trig_item_L1);
+			  setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI");
+          		  sc = fillL1Jet(*itJetRoI);
+			  if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI Jet histo. Exiting!"); return StatusCode::FAILURE;}		
+			  break;
 			}
-			if(isAlsoEMTauRoI) continue;
-			ATH_MSG_DEBUG("Found L1 Jet RoI in chain " << trig_item_L1);
-			setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI");
-          		sc = fillL1Jet(*itJetRoI);
-			if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI Jet histo. Exiting!"); return StatusCode::FAILURE;}		
 		}
 	  }
-
+	}
 	//  if(trig_item_L1=="L1_TAU20IM_2TAU12IM_J25_2J20_3J12"){ 
 	//	ATH_MSG_WARNING("fired L1_TAU20IM_2TAU12IM_J25_2J20_3J12");
 	//	for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){
@@ -449,7 +500,29 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){
         //        }
 	//  }
 
-        }
+        if(trig_item_L1=="L1_TAU20IM_2TAU12IM" && getTDT()->isPassed(trig_item_L1,m_L1TriggerCondition)){
+
+                const xAOD::JetContainer * jet_cont = 0;
+                if(evtStore()->retrieve(jet_cont, "AntiKt4LCTopoJets").isFailure())
+                {
+                        ATH_MSG_WARNING("Failed to retrieve AntiKt4EMTopoJets container. Exiting.");
+                        return StatusCode::FAILURE;
+                }
+                float maxPt=0;
+                xAOD::JetContainer::const_iterator jetItr, jet_cont_end = jet_cont->end();
+                for(jetItr=jet_cont->begin(); jetItr!=jet_cont_end; ++jetItr){
+			if(fabs((*jetItr)->eta())>3.2) continue;
+			bool tauRoi = false;
+  			for(unsigned int l1tau = 0; l1tau<tau_roIWord.size();l1tau++){
+                        	if(deltaR((*jetItr)->eta(), tau_roi_eta.at(l1tau), (*jetItr)->phi(), tau_roi_phi.at(l1tau)) < 0.3) tauRoi = true;
+			}
+			if(tauRoi) continue;
+                        if((*jetItr)->pt()>maxPt) maxPt=(*jetItr)->pt();
+                }
+                setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
+                if(getTDT()->isPassed("L1_TAU20IM_2TAU12IM_J25_2J20_3J12",m_L1TriggerCondition)) profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,1);
+                else  profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,0);
+        } 
 
      }// end L1 histos
 
@@ -544,7 +617,7 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){
 //      if(m_truth) sc = TauEfficiencyCombo(trigItem);
 //      if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill combo eff curves. Exiting!"); return StatusCode::FAILURE;}
     }  
-    
+
     if (!sc.isSuccess()) {
         ATH_MSG_WARNING("Could not fill histograms for given item.");
     }
@@ -638,8 +711,8 @@ StatusCode HLTTauMonTool::fillPreselTau(const xAOD::TauJet *aEFTau){
     hist("hFTFnTrack")->Fill(EFnTrack);
     hist("hEta")->Fill(aEFTau->eta());
     hist("hPhi")->Fill(aEFTau->phi());
-    float dRMax=-1; 
-    if(aEFTau->detail(xAOD::TauJetParameters::dRmax, dRMax)) hist("hdRmax")->Fill(dRMax); 
+    //float dRMax=-1; 
+    //if(aEFTau->detail(xAOD::TauJetParameters::dRmax, dRMax)) hist("hdRmax")->Fill(dRMax); 
     hist2("hEFEtaVsPhi")->Fill(aEFTau->eta(),aEFTau->phi());
     hist2("hEtVsEta")->Fill(aEFTau->eta(),aEFTau->pt()/CLHEP::GeV);
     hist2("hEtVsPhi")->Fill(aEFTau->phi(),aEFTau->pt()/CLHEP::GeV);
@@ -703,12 +776,17 @@ StatusCode HLTTauMonTool::fillEFTau(const xAOD::TauJet *aEFTau, const std::strin
   if(EFnTrack>1) isMP = true;
   //Pileup
   mu = Pileup();
-  
+
   if(BDTinput_type == "basicVars")
     {
       setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/EFTau");
       hist("hEFEt")->Fill(aEFTau->pt()/CLHEP::GeV);
       hist("hEFEta")->Fill(aEFTau->eta());
+      int num_vxt(0);
+      try {num_vxt = aEFTau->auxdata< int >("NUMVERTICES");}
+      catch(std::exception e) {ATH_MSG_DEBUG("HLTTauMonTool: NUMVERTICES decoration not found");}
+      hist("hEFNUM")->Fill(num_vxt);
+      hist2("hEFNUMvsmu")->Fill(num_vxt,mu);
       hist("hEFPhi")->Fill(aEFTau->phi());
       hist("hEFnTrack")->Fill(EFnTrack);
       hist("hEFnWideTrack")->Fill(aEFTau->nWideTracks());
@@ -1236,7 +1314,6 @@ StatusCode HLTTauMonTool::fillEFTauVsOffline(const xAOD::TauJet *aEFTau, const s
   if(BDTinput_type == "basicVars")
     {
       setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/EFVsOffline");
-
       //Basic Vars
       hist2("hEFvsOffnTrks")->Fill(aOfflineTau->nTracks(), aEFTau->nTracks());
       hist2("hEFvsOffnWideTrks")->Fill(aOfflineTau->nWideTracks(), aEFTau->nWideTracks());
@@ -1459,85 +1536,6 @@ StatusCode HLTTauMonTool::fillEFTauVsOffline(const xAOD::TauJet *aEFTau, const s
   return StatusCode::SUCCESS;
 }
 
-
-StatusCode HLTTauMonTool::fillTopoValidation(const std::string & trigItem_topo, const std::string & trigItem_support){
-
-//	if(!getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)) return StatusCode::SUCCESS;
-
-	const xAOD::JetRoIContainer *l1jets = 0;
-//        const xAOD::EmTauRoIContainer *l1taus = 0;
-
-	if ( m_storeGate->retrieve( l1jets, "LVL1JetRoIs").isFailure() ){
-		ATH_MSG_WARNING("Failed to retrieve LVL1JetRoIs container. Exiting.");
-		//return StatusCode::FAILURE;
-	}
-//	if ( m_storeGate->retrieve( l1taus, "LVL1EmTauRoIs").isFailure() ){
-//                ATH_MSG_WARNING("Failed to retrieve LVL1EmTauRoIs container. Exiting.");
-//                //return StatusCode::FAILURE;
-//        }
-   
-	xAOD::JetRoIContainer::const_iterator itJetRoI;
-	xAOD::JetRoIContainer::const_iterator itJetRoI_e = l1jets->end();
-//	xAOD::EmTauRoIContainer::const_iterator itEMTau = l1taus->begin();
-//	xAOD::EmTauRoIContainer::const_iterator itEMTau_e = l1taus->end();
-
-	if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition) && !getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)){
-		setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation");
-		hist("hSupportMismatch")->Fill(trigItem_topo.c_str(),1.);
-		return StatusCode::SUCCESS;
-	}
-	if(!getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)) return StatusCode::SUCCESS;
-
-	setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation/"+trigItem_topo);
-	Trig::FeatureContainer f = ( getTDT()->features(trigItem_support,m_L1TriggerCondition) );
-	Trig::FeatureContainer::combination_const_iterator comb(f.getCombinations().begin()), combEnd(f.getCombinations().end());
-
-	float min_dR(100.);
-        float min_dR_nojets(100.);
-        float min_dR_jets(100.);
-	for(;comb!=combEnd;++comb){
-		const std::vector< Trig::Feature<TrigRoiDescriptor> > vec_roi = comb->get<TrigRoiDescriptor>("initialRoI",m_L1TriggerCondition);
-		std::vector< Trig::Feature<TrigRoiDescriptor> >::const_iterator roi = vec_roi.begin(), roi1 = vec_roi.begin(), roi_e = vec_roi.end();
-
-                std::vector<bool> jet_roi;
-		std::vector<float> phi_roi;
-		std::vector<float> eta_roi;
-                for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){
-                        jet_roi.push_back(false);
-			phi_roi.push_back(roi->cptr()->phi());
-			eta_roi.push_back(roi->cptr()->eta());
-                        for(itJetRoI = l1jets->begin(); itJetRoI!=itJetRoI_e; ++itJetRoI){
-                                if(roi->cptr()->roiWord()==(*itJetRoI)->roiWord()) jet_roi.back()=true;
-                        }
-                }
-
-		for(unsigned int i = 0; i < phi_roi.size(); ++i){
-			for(unsigned int j = i+1; j < phi_roi.size(); ++j){	
-				float dR = deltaR(eta_roi.at(i),eta_roi.at(j),phi_roi.at(i),phi_roi.at(j));
-				if(dR<0.3) continue;
-				if(dR<min_dR) min_dR = dR;
-				if(!jet_roi.at(i) && !jet_roi.at(j)) if(dR<min_dR_nojets) min_dR_nojets = dR;
-				if(jet_roi.at(i) || jet_roi.at(j)) if(dR<min_dR_jets) min_dR_jets = dR;			
-			}
-		}
-		
-	}
-
-	if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)){
-		hist("hDR")->Fill(min_dR);
-        	hist("hDRnoJets")->Fill(min_dR_nojets);
-        	hist("hDRjets")->Fill(min_dR_jets);
-	}
-        else {
-                hist("hDR_noTopo")->Fill(min_dR);
-                hist("hDRnoJets_noTopo")->Fill(min_dR_nojets);
-                hist("hDRjets_noTopo")->Fill(min_dR_jets);
-        }
-
-	return StatusCode::SUCCESS;
-
-}
-
 //------------------------------------------------------------------------------------
 // Testing methods
 //------------------------------------------------------------------------------------
@@ -2058,62 +2056,66 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std:
 	  int ntracks = ntrk_TauDenom.at(i);
 	  if(m_L1StringCondition=="allowResurrectedDecision" || m_HLTStringCondition=="allowResurrectedDecision"){
 	    if(tlv_TauDenom.at(i).DeltaR(Muon_TLV)<0.4) continue;
-		}
+	  }
 	  double pt = tlv_TauDenom.at(i).Pt();
 	  double eta = tlv_TauDenom.at(i).Eta();
 	  double phi = tlv_TauDenom.at(i).Phi();
 	  
-	  	if(m_selection_nTrkMax>-1 && ntracks>m_selection_nTrkMax) continue;
-   	  	if(m_selection_nTrkMin>-1 && ntracks<m_selection_nTrkMin) continue;
-   	  	if(m_selection_ptMax>-1 && pt>m_selection_ptMax) continue;
-   	  	if(m_selection_ptMin>-1 && pt<m_selection_ptMin) continue;
-   	  	if(m_selection_absEtaMax>-1 && fabs(eta)>m_selection_absEtaMax) continue;
-   	  	if(m_selection_absEtaMin>-1 && fabs(eta)<m_selection_absEtaMin) continue;
-   	  	if(m_selection_absPhiMax>-1 && fabs(phi)>m_selection_absPhiMax) continue;
-   	  	if(m_selection_absPhiMin>-1 && fabs(phi)<m_selection_absPhiMin) continue;
+	  if(m_selection_nTrkMax>-1 && ntracks>m_selection_nTrkMax) continue;
+   	  if(m_selection_nTrkMin>-1 && ntracks<m_selection_nTrkMin) continue;
+   	  if(m_selection_ptMax>-1 && pt>m_selection_ptMax) continue;
+   	  if(m_selection_ptMin>-1 && pt<m_selection_ptMin) continue;
+   	  if(m_selection_absEtaMax>-1 && fabs(eta)>m_selection_absEtaMax) continue;
+   	  if(m_selection_absEtaMin>-1 && fabs(eta)<m_selection_absEtaMin) continue;
+   	  if(m_selection_absPhiMax>-1 && fabs(phi)>m_selection_absPhiMax) continue;
+   	  if(m_selection_absPhiMin>-1 && fabs(phi)<m_selection_absPhiMin) continue;
 		
-
-
-      		hist("hRecoTauPtDenom")->Fill(pt/1000.);
-      		if(ntracks == 1) hist("hRecoTauPt1PDenom")->Fill(pt/1000.);
-      		if(ntracks > 1)  hist("hRecoTauPt3PDenom")->Fill(pt/1000.);
-		hist("hRecoTauEtaDenom")->Fill(eta);
-      		hist("hRecoTauPhiDenom")->Fill(phi);
-      		hist("hRecoTauNTrackDenom")->Fill(ntracks);
-      		hist("hRecoTauNVtxDenom")->Fill(nvtx);
-      		hist("hRecoTauMuDenom")->Fill(mu);
-      		hist2("hRecoTauEtaVsPhiDenom")->Fill(eta,phi);
-					
+		//      		hist("hRecoTauPtDenom")->Fill(pt/1000.);
+		//      		if(ntracks == 1) hist("hRecoTauPt1PDenom")->Fill(pt/1000.);
+		//      		if(ntracks > 1)  hist("hRecoTauPt3PDenom")->Fill(pt/1000.);
+		//		hist("hRecoTauEtaDenom")->Fill(eta);
+		//      		hist("hRecoTauPhiDenom")->Fill(phi);
+		//      		hist("hRecoTauNTrackDenom")->Fill(ntracks);
+		//      		hist("hRecoTauNVtxDenom")->Fill(nvtx);
+		//      		hist("hRecoTauMuDenom")->Fill(mu);
+	  hist2("hRecoTauEtaVsPhiDenom")->Fill(eta,phi);				
 		// get prescale wait:
 		//float L1_PS = PrescaleRetrieval(trigItem,"L1");
 		//float Tot_PS = PrescaleRetrieval(trigItem,"TOT");
 		//ATH_MSG_WARNING(trigItem << " " << L1_PS << " " << Tot_PS);
-		if(m_bootstrap && !getTDT()->isPassed("L1_TAU12")) continue; 		
-
+	  if(m_bootstrap && !getTDT()->isPassed("L1_TAU12")) continue; 		
 		//const unsigned int HLT_bits = getTDT()->isPassedBits("HLT_"+trigItem);
 		//if( !(HLT_bits & TrigDefs::EF_resurrected) ) continue;
 
-		if( HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2)  ){
-			hist("hRecoHLTPtNum")->Fill(pt/1000.);
-	  		if(ntracks == 1) {hist("hRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);}
-	  		if(ntracks > 1) {hist("hRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);}
-	  		hist("hRecoHLTEtaNum")->Fill(eta);
-	  		hist("hRecoHLTPhiNum")->Fill(phi);
-	  		hist("hRecoHLTNTrackNum")->Fill(ntracks);
-	  		hist("hRecoHLTNVtxNum")->Fill(nvtx);
-	  		hist("hRecoHLTMuNum")->Fill(mu);
-	  		hist2("hRecoHLTEtaVsPhiNum")->Fill(eta,phi);
-			profile("TProfRecoHLTPtEfficiency")->Fill(pt/1000.,1);
-			profile("TProfRecoHLTEtaEfficiency")->Fill(eta,1);
-			profile("TProfRecoHLTPhiEfficiency")->Fill(phi,1);
-			profile("TProfRecoHLTNTrackEfficiency")->Fill(ntracks,1);
-			profile("TProfRecoHLTNVtxEfficiency")->Fill(nvtx,1);
-			profile("TProfRecoHLTMuEfficiency")->Fill(mu,1);
-		}
-
-		if( !HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2)  ){
+	  if( HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2)  ){
+		  //	hist("hRecoHLTPtNum")->Fill(pt/1000.);
+		  //		  if(ntracks == 1) {hist("hRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);}
+		  //	       	if(ntracks > 1) {hist("hRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks == 1) {profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks > 1) {profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);}
+		  profile("TProfRecoHLTHighPtEfficiency")->Fill(pt/1000.,1);
+		  if(ntracks == 1) {profile("TProfRecoHLTHighPt1pEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks > 1) {profile("TProfRecoHLTHighPt3pEfficiency")->Fill(pt/1000.,1);}
+		  //	  		hist("hRecoHLTEtaNum")->Fill(eta);
+		  //	  		hist("hRecoHLTPhiNum")->Fill(phi);
+		  //	  		hist("hRecoHLTNTrackNum")->Fill(ntracks);
+			//	  		hist("hRecoHLTNVtxNum")->Fill(nvtx);
+			//	  		hist("hRecoHLTMuNum")->Fill(mu);
+		  hist2("hRecoHLTEtaVsPhiNum")->Fill(eta,phi);
+		  profile("TProfRecoHLTPtEfficiency")->Fill(pt/1000.,1);
+		  profile("TProfRecoHLTEtaEfficiency")->Fill(eta,1);
+		  profile("TProfRecoHLTPhiEfficiency")->Fill(phi,1);
+		  profile("TProfRecoHLTNTrackEfficiency")->Fill(ntracks,1);
+		  profile("TProfRecoHLTNVtxEfficiency")->Fill(nvtx,1);
+		  profile("TProfRecoHLTMuEfficiency")->Fill(mu,1);
+	  }
+		
+	  if( !HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2)  ){
 		  if(ntracks == 1) profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,0);
                   if(ntracks > 1) profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,0);
+		  profile("TProfRecoHLTHighPtEfficiency")->Fill(pt/1000.,0);
+		  if(ntracks == 1) {profile("TProfRecoHLTHighPt1pEfficiency")->Fill(pt/1000.,0);}
+		  if(ntracks > 1) {profile("TProfRecoHLTHighPt3pEfficiency")->Fill(pt/1000.,0);}
 		  profile("TProfRecoHLTPtEfficiency")->Fill(pt/1000.,0);
 		  profile("TProfRecoHLTEtaEfficiency")->Fill(eta,0);
 		  profile("TProfRecoHLTPhiEfficiency")->Fill(phi,0);
@@ -2121,36 +2123,44 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std:
 		  profile("TProfRecoHLTNVtxEfficiency")->Fill(nvtx,0);
 		  profile("TProfRecoHLTMuEfficiency")->Fill(mu,0);
   
-		}
+	  }
 
-                if( L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3)  ){
-                        hist("hRecoL1PtNum")->Fill(pt/1000.);
-                        if(ntracks == 1) {hist("hRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);}
-                        if(ntracks > 1) {hist("hRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);}
-                        hist("hRecoL1EtaNum")->Fill(eta);
-                        hist("hRecoL1PhiNum")->Fill(phi);
-                        hist("hRecoL1NTrackNum")->Fill(ntracks);
-                        hist("hRecoL1NVtxNum")->Fill(nvtx);
-                        hist("hRecoL1MuNum")->Fill(mu);
-                        hist2("hRecoL1EtaVsPhiNum")->Fill(eta,phi);
+          if( L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3)  ){
+		  //                        hist("hRecoL1PtNum")->Fill(pt/1000.);
+		  //                        if(ntracks == 1) {hist("hRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);}
+		  //                        if(ntracks > 1) {hist("hRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);}
+                        if(ntracks == 1) {profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);}
+                        if(ntracks > 1) {profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);}
+                        if(ntracks == 1) {profile("TProfRecoL1HighPt1PEfficiency")->Fill(pt/1000.,1);}
+                        if(ntracks > 1) {profile("TProfRecoL1HighPt3PEfficiency")->Fill(pt/1000.,1);}
+			//                        hist("hRecoL1EtaNum")->Fill(eta);
+			//                        hist("hRecoL1PhiNum")->Fill(phi);
+			//                        hist("hRecoL1NTrackNum")->Fill(ntracks);
+			//                        hist("hRecoL1NVtxNum")->Fill(nvtx);
+			//                        hist("hRecoL1MuNum")->Fill(mu);
+			hist2("hRecoL1EtaVsPhiNum")->Fill(eta,phi);
 			profile("TProfRecoL1PtEfficiency")->Fill(pt/1000.,1);
+			profile("TProfRecoL1HighPtEfficiency")->Fill(pt/1000.,1);
 			profile("TProfRecoL1EtaEfficiency")->Fill(eta,1);
 			profile("TProfRecoL1PhiEfficiency")->Fill(phi,1);
 			profile("TProfRecoL1NTrackEfficiency")->Fill(ntracks,1);
 			profile("TProfRecoL1NVtxEfficiency")->Fill(nvtx,1);
 			profile("TProfRecoL1MuEfficiency")->Fill(mu,1);
-                }
+          }
 
-		if( !L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3)  ){
+	  if( !L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3)  ){
 		  if(ntracks == 1) profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,0);
 		  if(ntracks > 1) profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,0);
+		  if(ntracks == 1) {profile("TProfRecoL1HighPt1PEfficiency")->Fill(pt/1000.,0);}
+		  if(ntracks > 1) {profile("TProfRecoL1HighPt3PEfficiency")->Fill(pt/1000.,0);}
 		  profile("TProfRecoL1PtEfficiency")->Fill(pt/1000.,0);
+		  profile("TProfRecoL1HighPtEfficiency")->Fill(pt/1000.,0);
 		  profile("TProfRecoL1EtaEfficiency")->Fill(eta,0);
 		  profile("TProfRecoL1PhiEfficiency")->Fill(phi,0);
 		  profile("TProfRecoL1NTrackEfficiency")->Fill(ntracks,0);
 		  profile("TProfRecoL1NVtxEfficiency")->Fill(nvtx,0);
 		  profile("TProfRecoL1MuEfficiency")->Fill(mu,0);
-		}
+	  }
 	
 	}
 
@@ -2173,29 +2183,40 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std:
 	    if(ntracks!=1 && ntracks!=3 ) continue;
 	    bool good_tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium);
 	    if(good_tau){
+
+	      //	      std::cout<<"HLT"<<trigItem<<std::endl;
+	      if(trigItem=="tau160_idperf_tracktwo"){
+                setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
+		if( HLTTauMatching("tau160_perf_tracktwo", TauTLV, 0.2)  ){
+		  profile("TProfRecoHLT160PtEfficiency")->Fill(pt/1000.,1);}
+		else if( HLTTauMatching("tau160_idperf_tracktwo", TauTLV, 0.2)  ){
+		  profile("TProfRecoHLT160PtEfficiency")->Fill(pt/1000.,0);}
+	      }
+
+
 	      if(trigItem=="tau25_idperf_track"){
 		setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
 		if( HLTTauMatching("tau25_idperf_tracktwo", TauTLV, 0.2)  ){
-		  hist("hRecoTau25PtDenom")->Fill(pt/1000.);
-		  if(ntracks == 1) hist("hRecoTau25Pt1PDenom")->Fill(pt/1000.);
-		  if(ntracks > 1)  hist("hRecoTau25Pt3PDenom")->Fill(pt/1000.);
-		  hist("hRecoTau25EtaDenom")->Fill(eta);
-		  hist("hRecoTau25PhiDenom")->Fill(phi);
-		  hist("hRecoTau25NTrackDenom")->Fill(ntracks);
-		  hist("hRecoTau25NVtxDenom")->Fill(nvtx);
-		  hist("hRecoTau25MuDenom")->Fill(mu);
+		  //		  hist("hRecoTau25PtDenom")->Fill(pt/1000.);
+		  //		  if(ntracks == 1) hist("hRecoTau25Pt1PDenom")->Fill(pt/1000.);
+		  //		  if(ntracks > 1)  hist("hRecoTau25Pt3PDenom")->Fill(pt/1000.);
+		  //		  hist("hRecoTau25EtaDenom")->Fill(eta);
+		  //		  hist("hRecoTau25PhiDenom")->Fill(phi);
+		  //		  hist("hRecoTau25NTrackDenom")->Fill(ntracks);
+		  //		  hist("hRecoTau25NVtxDenom")->Fill(nvtx);
+		  //		  hist("hRecoTau25MuDenom")->Fill(mu);
 		  hist2("hRecoTau25EtaVsPhiDenom")->Fill(eta,phi);
 		}
 		if( HLTTauMatching("tau25_perf_tracktwo", TauTLV, 0.2)  )
 		  {		  
-		    hist("hRecoHLT25PtNum")->Fill(pt/1000.);
-		    if(ntracks == 1) hist("hRecoHLT25Pt1PNum")->Fill(pt/1000.);
-		    if(ntracks > 1) hist("hRecoHLT25Pt3PNum")->Fill(pt/1000.);
-		    hist("hRecoHLT25EtaNum")->Fill(eta);
-		    hist("hRecoHLT25PhiNum")->Fill(phi);
-		    hist("hRecoHLT25NTrackNum")->Fill(ntracks);
-		    hist("hRecoHLT25NVtxNum")->Fill(nvtx);
-		    hist("hRecoHLT25MuNum")->Fill(mu);
+		    //		    hist("hRecoHLT25PtNum")->Fill(pt/1000.);
+		    //		    if(ntracks == 1) hist("hRecoHLT25Pt1PNum")->Fill(pt/1000.);
+		    //		    if(ntracks > 1) hist("hRecoHLT25Pt3PNum")->Fill(pt/1000.);
+		    //		    hist("hRecoHLT25EtaNum")->Fill(eta);
+		    //		    hist("hRecoHLT25PhiNum")->Fill(phi);
+		    //		    hist("hRecoHLT25NTrackNum")->Fill(ntracks);
+		    //		    hist("hRecoHLT25NVtxNum")->Fill(nvtx);
+		    //		    hist("hRecoHLT25MuNum")->Fill(mu);
 		    hist2("hRecoHLT25EtaVsPhiNum")->Fill(eta,phi);
 		    profile("TProfRecoHLT25PtEfficiency")->Fill(pt/1000.,1);
 		    if(ntracks==1)   profile("TProfRecoHLT25Pt1PEfficiency")->Fill(pt/1000.,1);
@@ -2218,34 +2239,42 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std:
 		  
 		}
 	      }
+	   
+	      if(trigItem=="tau160_perf_tracktwo"){
+		setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
+		if( HLTTauMatching("tau160_medium1_tracktwo", TauTLV, 0.2)  ){
+		  profile("TProfRecoHLT160PtEfficiency_2")->Fill(pt/1000.,1);}
+		else if( HLTTauMatching("tau160_perf_tracktwo", TauTLV, 0.2)  ){
+		  profile("TProfRecoHLT160PtEfficiency_2")->Fill(pt/1000.,0);}
+	      }
 		
 	      if(trigItem=="tau25_perf_tracktwo"){
 		setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
 		  if( HLTTauMatching("tau25_perf_tracktwo", TauTLV, 0.2)  ){
-		    hist("hRecoTau25PtDenom_2")->Fill(pt/1000.);
-		    if(ntracks == 1) hist("hRecoTau25Pt1PDenom_2")->Fill(pt/1000.);
-		    if(ntracks > 1)  hist("hRecoTau25Pt3PDenom_2")->Fill(pt/1000.);
-		    hist("hRecoTau25EtaDenom_2")->Fill(eta);
-		    hist("hRecoTau25PhiDenom_2")->Fill(phi);
-		    hist("hRecoTau25NTrackDenom_2")->Fill(ntracks);
-		    hist("hRecoTau25NVtxDenom_2")->Fill(nvtx);
-		    hist("hRecoTau25MuDenom_2")->Fill(mu);
+		    //		    hist("hRecoTau25PtDenom_2")->Fill(pt/1000.);
+		    //		    if(ntracks == 1) hist("hRecoTau25Pt1PDenom_2")->Fill(pt/1000.);
+		    //		    if(ntracks > 1)  hist("hRecoTau25Pt3PDenom_2")->Fill(pt/1000.);
+		    //		    hist("hRecoTau25EtaDenom_2")->Fill(eta);
+		    //		    hist("hRecoTau25PhiDenom_2")->Fill(phi);
+		    //		    hist("hRecoTau25NTrackDenom_2")->Fill(ntracks);
+		    //		    hist("hRecoTau25NVtxDenom_2")->Fill(nvtx);
+		    //		    hist("hRecoTau25MuDenom_2")->Fill(mu);
 		    hist2("hRecoTau25EtaVsPhiDenom_2")->Fill(eta,phi);
 		  }
 		  
 		  if( HLTTauMatching("tau25_medium1_tracktwo", TauTLV, 0.2)  ){
-		    hist("hRecoHLT25PtNum_2")->Fill(pt/1000.);
+		    //		    hist("hRecoHLT25PtNum_2")->Fill(pt/1000.);
 		    if(ntracks == 1) {
-		      hist("hRecoHLT25Pt1PNum_2")->Fill(pt/1000.);
+		      //		      hist("hRecoHLT25Pt1PNum_2")->Fill(pt/1000.);
 		      profile("TProfRecoHLT25Pt1PEfficiency_2")->Fill(pt/1000.,1);}
 		    if(ntracks > 1) {
-		      hist("hRecoHLT25Pt3PNum_2")->Fill(pt/1000.);
+		      //		      hist("hRecoHLT25Pt3PNum_2")->Fill(pt/1000.);
 		      profile("TProfRecoHLT25Pt3PEfficiency_2")->Fill(pt/1000.,1);}
-		    hist("hRecoHLT25EtaNum_2")->Fill(eta);
-		    hist("hRecoHLT25PhiNum_2")->Fill(phi);
-		    hist("hRecoHLT25NTrackNum_2")->Fill(ntracks);
-		    hist("hRecoHLT25NVtxNum_2")->Fill(nvtx);
-		    hist("hRecoHLT25MuNum_2")->Fill(mu);
+		    //		    hist("hRecoHLT25EtaNum_2")->Fill(eta);
+		    //		    hist("hRecoHLT25PhiNum_2")->Fill(phi);
+		    //		    hist("hRecoHLT25NTrackNum_2")->Fill(ntracks);
+		    //		    hist("hRecoHLT25NVtxNum_2")->Fill(nvtx);
+		    //		    hist("hRecoHLT25MuNum_2")->Fill(mu);
 		    hist2("hRecoHLT25EtaVsPhiNum_2")->Fill(eta,phi);
 		    profile("TProfRecoHLT25PtEfficiency_2")->Fill(pt/1000.,1);
 		    profile("TProfRecoHLT25EtaEfficiency_2")->Fill(eta,1);
@@ -2262,13 +2291,12 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std:
 		    profile("TProfRecoHLT25NTrackEfficiency_2")->Fill(ntracks,0);
 		    profile("TProfRecoHLT25NVtxEfficiency_2")->Fill(nvtx,0);
 		    profile("TProfRecoHLT25MuEfficiency_2")->Fill(mu,0);		
-		  
-		  }
-		}
-	      }
+		  }	 
+	      }   
 	    }
+	  }	
 
-	return StatusCode::SUCCESS;
+	  return StatusCode::SUCCESS;
 }
 
 
@@ -2721,26 +2749,28 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const
             {
 	      setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/TruthEfficiency");
 	      
-	      hist("hTrueTauPtDenom")->Fill(pt/1000.);
-	      if(ntracks == 1) hist("hTrueTauPt1PDenom")->Fill(pt/1000.);
-	      if(ntracks > 1) hist("hTrueTauPt3PDenom")->Fill(pt/1000.);
-	      hist("hTrueTauEtaDenom")->Fill(eta);
-	      hist("hTrueTauPhiDenom")->Fill(phi);
-	      hist("hTrueTauNTrackDenom")->Fill(ntracks);
-	      hist("hTrueTauNVtxDenom")->Fill(nvtx);
-              hist("hTrueTauMuDenom")->Fill(mu);
+	      //	      hist("hTrueTauPtDenom")->Fill(pt/1000.);
+	      //	      if(ntracks == 1) hist("hTrueTauPt1PDenom")->Fill(pt/1000.);
+	      //	      if(ntracks > 1) hist("hTrueTauPt3PDenom")->Fill(pt/1000.);
+	      //	      hist("hTrueTauEtaDenom")->Fill(eta);
+	      //	      hist("hTrueTauPhiDenom")->Fill(phi);
+	      //	      hist("hTrueTauNTrackDenom")->Fill(ntracks);
+	      //	      hist("hTrueTauNVtxDenom")->Fill(nvtx);
+	      //              hist("hTrueTauMuDenom")->Fill(mu);
 	      hist2("hTrueTauEtaVsPhiDenom")->Fill(eta,phi);
 	      
 	      if(truth_matched_to_L1.back())
 		{
-		  hist("hTrueL1PtNum")->Fill(pt/1000.);
-		  if(ntracks == 1) {hist("hTrueL1Pt1PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt1PEfficiency")->Fill(pt/1000.,1);}
-		  if(ntracks > 1) {hist("hTrueL1Pt3PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt3PEfficiency")->Fill(pt/1000.,1);}
-		  hist("hTrueL1EtaNum")->Fill(eta);
-		  hist("hTrueL1PhiNum")->Fill(phi);
-		  hist("hTrueL1NTrackNum")->Fill(ntracks);
-		  hist("hTrueL1NVtxNum")->Fill(nvtx);
-		  hist("hTrueL1MuNum")->Fill(mu);
+		  //		  hist("hTrueL1PtNum")->Fill(pt/1000.);
+		  //		  if(ntracks == 1) {hist("hTrueL1Pt1PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt1PEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks == 1) {profile("TProfTrueL1Pt1PEfficiency")->Fill(pt/1000.,1);}
+		  //		  if(ntracks > 1) {hist("hTrueL1Pt3PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt3PEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks > 1) { profile("TProfTrueL1Pt3PEfficiency")->Fill(pt/1000.,1);}
+		  //		  hist("hTrueL1EtaNum")->Fill(eta);
+		  //		  hist("hTrueL1PhiNum")->Fill(phi);
+		  //		  hist("hTrueL1NTrackNum")->Fill(ntracks);
+		  //		  hist("hTrueL1NVtxNum")->Fill(nvtx);
+		  //		  hist("hTrueL1MuNum")->Fill(mu);
 		  hist2("hTrueL1EtaVsPhiNum")->Fill(eta,phi);
 		  profile("TProfTrueL1PtEfficiency")->Fill(pt/1000.,1);
 		  profile("TProfTrueL1EtaEfficiency")->Fill(eta,1);
@@ -2764,14 +2794,16 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const
 
               if(truth_matched_to_hlt.back())
 		{
-		  hist("hTrueHLTPtNum")->Fill(pt/1000.);
-		  if(ntracks == 1) {hist("hTrueHLTPt1PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt1PEfficiency")->Fill(pt/1000.,1);}
-		  if(ntracks > 1) {hist("hTrueHLTPt3PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt3PEfficiency")->Fill(pt/1000.,1);}
-		  hist("hTrueHLTEtaNum")->Fill(eta);
-		  hist("hTrueHLTPhiNum")->Fill(phi);
-		  hist("hTrueHLTNTrackNum")->Fill(ntracks);
-		  hist("hTrueHLTNVtxNum")->Fill(nvtx);
-		  hist("hTrueHLTMuNum")->Fill(mu);
+		  //		  hist("hTrueHLTPtNum")->Fill(pt/1000.);
+		  //		  if(ntracks == 1) {hist("hTrueHLTPt1PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt1PEfficiency")->Fill(pt/1000.,1);}
+		  //		  if(ntracks > 1) {hist("hTrueHLTPt3PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt3PEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks == 1) {profile("TProfTrueHLTPt1PEfficiency")->Fill(pt/1000.,1);}
+		  if(ntracks > 1) { profile("TProfTrueHLTPt3PEfficiency")->Fill(pt/1000.,1);}
+		  //		  hist("hTrueHLTEtaNum")->Fill(eta);
+		  //		  hist("hTrueHLTPhiNum")->Fill(phi);
+		  //		  hist("hTrueHLTNTrackNum")->Fill(ntracks);
+		  //		  hist("hTrueHLTNVtxNum")->Fill(nvtx);
+		  //		  hist("hTrueHLTMuNum")->Fill(mu);
 		  hist2("hTrueHLTEtaVsPhiNum")->Fill(eta,phi);
 		  profile("TProfTrueHLTPtEfficiency")->Fill(pt/1000.,1);
 		  profile("TProfTrueHLTEtaEfficiency")->Fill(eta,1);
@@ -2802,26 +2834,28 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const
 	      
 	      if(truth_matched_to_reco.back())
 		{	
-		  hist("hTruthRecoTauPtDenom")->Fill(pt/1000.);
-		  if(ntracks == 1) hist("hTruthRecoTauPt1PDenom")->Fill(pt/1000.);
-		  if(ntracks > 1) hist("hTruthRecoTauPt3PDenom")->Fill(pt/1000.);
-		  hist("hTruthRecoTauEtaDenom")->Fill(eta);
-		  hist("hTruthRecoTauPhiDenom")->Fill(phi);
-		  hist("hTruthRecoTauNTrackDenom")->Fill(ntracks);
-		  hist("hTruthRecoTauNVtxDenom")->Fill(nvtx);
-		  hist("hTruthRecoTauMuDenom")->Fill(mu);
+		  //		  hist("hTruthRecoTauPtDenom")->Fill(pt/1000.);
+		  //		  if(ntracks == 1) hist("hTruthRecoTauPt1PDenom")->Fill(pt/1000.);
+		  //		  if(ntracks > 1) hist("hTruthRecoTauPt3PDenom")->Fill(pt/1000.);
+		  //		  hist("hTruthRecoTauEtaDenom")->Fill(eta);
+		  //		  hist("hTruthRecoTauPhiDenom")->Fill(phi);
+		  //		  hist("hTruthRecoTauNTrackDenom")->Fill(ntracks);
+		  //		  hist("hTruthRecoTauNVtxDenom")->Fill(nvtx);
+		  //		  hist("hTruthRecoTauMuDenom")->Fill(mu);
 		  hist2("hTruthRecoTauEtaVsPhiDenom")->Fill(eta,phi);
 
 		  if(truthReco_matched_to_L1.back())
 		    {
-		      hist("hTruthRecoL1PtNum")->Fill(pt/1000.);
-		      if(ntracks == 1) {hist("hTruthRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);}
-		      if(ntracks > 1) {hist("hTruthRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);}
-		      hist("hTruthRecoL1EtaNum")->Fill(eta);
-		      hist("hTruthRecoL1PhiNum")->Fill(phi);
-		      hist("hTruthRecoL1NTrackNum")->Fill(ntracks);
-		      hist("hTruthRecoL1NVtxNum")->Fill(nvtx);
-		      hist("hTruthRecoL1MuNum")->Fill(mu);
+		      //  hist("hTruthRecoL1PtNum")->Fill(pt/1000.);
+		      //		      if(ntracks == 1) {hist("hTruthRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);}
+		      //		      if(ntracks > 1) {hist("hTruthRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);}
+		      if(ntracks == 1) { profile("TProfTruthRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);}
+		      if(ntracks > 1) { profile("TProfTruthRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);}
+		      //		      hist("hTruthRecoL1EtaNum")->Fill(eta);
+		      //		      hist("hTruthRecoL1PhiNum")->Fill(phi);
+		      //		      hist("hTruthRecoL1NTrackNum")->Fill(ntracks);
+		      //		      hist("hTruthRecoL1NVtxNum")->Fill(nvtx);
+		      //		      hist("hTruthRecoL1MuNum")->Fill(mu);
 		      hist2("hTruthRecoL1EtaVsPhiNum")->Fill(eta,phi);
 		      profile("TProfTruthRecoL1PtEfficiency")->Fill(pt/1000.,1);
 		      profile("TProfTruthRecoL1EtaEfficiency")->Fill(eta,1);
@@ -2848,13 +2882,15 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const
 		  if(truthReco_matched_to_hlt.back())
 		    {
 		      hist("hTruthRecoHLTPtNum")->Fill(pt/1000.);
-		      if(ntracks == 1) {hist("hTruthRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);}
-		      if(ntracks > 1) {hist("hTruthRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);}
-		      hist("hTruthRecoHLTEtaNum")->Fill(eta);
-		      hist("hTruthRecoHLTPhiNum")->Fill(phi);
-		      hist("hTruthRecoHLTNTrackNum")->Fill(ntracks);
-		      hist("hTruthRecoHLTNVtxNum")->Fill(nvtx);
-		      hist("hTruthRecoHLTMuNum")->Fill(mu);
+		      //		      if(ntracks == 1) {hist("hTruthRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);}
+		      //		      if(ntracks > 1) {hist("hTruthRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);}
+		      if(ntracks == 1) {profile("TProfTruthRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);}
+		      if(ntracks > 1) { profile("TProfTruthRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);}
+		      //		      hist("hTruthRecoHLTEtaNum")->Fill(eta);
+		      //		      hist("hTruthRecoHLTPhiNum")->Fill(phi);
+		      //		      hist("hTruthRecoHLTNTrackNum")->Fill(ntracks);
+		      //		      hist("hTruthRecoHLTNVtxNum")->Fill(nvtx);
+		      //		      hist("hTruthRecoHLTMuNum")->Fill(mu);
 		      hist2("hTruthRecoHLTEtaVsPhiNum")->Fill(eta,phi);
 		      profile("TProfTruthRecoHLTPtEfficiency")->Fill(pt/1000.,1);
 		      profile("TProfTruthRecoHLTEtaEfficiency")->Fill(eta,1);
@@ -2891,6 +2927,33 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const
   return StatusCode::SUCCESS;
 }
 
+bool HLTTauMonTool::PresTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR){
+	std::string trig_item_EF= "HLT_"+trigItem;
+	if (getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition)) {
+
+       Trig::FeatureContainer f = ( getTDT()->features(trig_item_EF,m_HLTTriggerCondition) );
+       Trig::FeatureContainer::combination_const_iterator comb(f.getCombinations().begin()), combEnd(f.getCombinations().end());
+
+       for(;comb!=combEnd;++comb){
+
+       	 const std::vector< Trig::Feature<xAOD::TauJetContainer> >  vec_preseltau = comb -> get<xAOD::TauJetContainer>("HLT_xAOD__TauJetContainer_TrigTauRecPreselection", m_HLTTriggerCondition);
+         std::vector<Trig::Feature<xAOD::TauJetContainer> >::const_iterator preselCI = vec_preseltau.begin(), preselCI_e = vec_preseltau.end();
+
+         for(; preselCI != preselCI_e; ++preselCI){
+             if(preselCI->cptr()){
+                xAOD::TauJetContainer::const_iterator tauItr = preselCI->cptr()->begin();
+                xAOD::TauJetContainer::const_iterator tauEnd = preselCI->cptr()->end();
+		for(; tauItr != tauEnd; ++tauItr) {
+                	double delR = (*tauItr)->p4().DeltaR(TLV);
+			if(delR <= DR) return true;  
+			}
+	      }
+	 }
+	}
+	}
+	return true;
+}     
+            
 
 bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR)
 {
@@ -2903,7 +2966,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV
   std::string trig_item_EF= "HLT_"+trigItem;
   //std::string l1_chain(LowerChain("HLT_"+trigItem));
 
-  std::string testing_chain(trig_item_EF);
+/*  std::string testing_chain(trig_item_EF);
   if(testing_chain.find("emulate")!=std::string::npos){
 	ATH_MSG_DEBUG("Emulating "<<testing_chain);
 	// emulate new trk preselection
@@ -2912,7 +2975,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV
 	// same for track
 	if(testing_chain.find("track")!=std::string::npos) trig_item_EF = "HLT_tau25_idperf_track"; 
 	if(testing_chain.find("tracktwo")!=std::string::npos) trig_item_EF = "HLT_tau25_idperf_tracktwo"; 
-  }
+  }*/
 
   if(getTDT()->isPassed(trig_item_EF,TrigDefs::Physics | TrigDefs::allowResurrectedDecision)  )
     {
@@ -2949,7 +3012,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV
 			{
 			  ATH_MSG_DEBUG("HLT tau: pt " << (*Itr_tauEFjet)->pt() << ", #trk " << (*Itr_tauEFjet)->nTracks());
 
-			  if(testing_chain.find("emulate")!=std::string::npos){
+			  /*if(testing_chain.find("emulate")!=std::string::npos){
 				bool pass = false;
 				bool do2step = false;
 				bool doReject0trk = true;
@@ -2957,10 +3020,10 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV
 				if(testing_chain.find("tracktwo")!=std::string::npos) do2step = true;
 				if(testing_chain.find("ptmin")!=std::string::npos) track_pt_min = 1000.;
 				if(testing_chain.find("no0reject")!=std::string::npos) doReject0trk = false;
-				float RoI_eta = (*Itr_tauEFjet)->etaJetSeed();
-				float RoI_phi = (*Itr_tauEFjet)->phiJetSeed();
-				ATH_MSG_DEBUG("Emulating "<<testing_chain<<" with do2step "<<do2step<<", doReject0trk "<<doReject0trk<<", track_pt_min "<<track_pt_min);
-				pass = emulate2StepTracking(RoI_eta, RoI_phi, do2step, doReject0trk, track_pt_min);
+				//				float RoI_eta = (*Itr_tauEFjet)->etaJetSeed();
+				//				float RoI_phi = (*Itr_tauEFjet)->phiJetSeed();
+				// ATH_MSG_DEBUG("Emulating "<<testing_chain<<" with do2step "<<do2step<<", doReject0trk "<<doReject0trk<<", track_pt_min "<<track_pt_min);
+				//				pass = emulate2StepTracking(RoI_eta, RoI_phi, do2step, doReject0trk, track_pt_min);
 				if(!pass) return false;
 				ATH_MSG_DEBUG("Passed emulated trk preselection");
 				pass = L1TauMatching("L1_TAU12IM", TLV, 0.3);
@@ -2969,7 +3032,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV
 				if(testing_chain.find("medium")!=std::string::npos) pass = HLTTauMatching("HLT_tau25_medium1_mvonly", (*Itr_tauEFjet)->p4(), 0.2);
 				if(!pass) return false;	
 				ATH_MSG_DEBUG("Passed medium1");
-			  }
+			  }*/
 
 			  double delR = (*Itr_tauEFjet)->p4().DeltaR(TLV);
 			  if(delR <= DR) return true;
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h
index 91b3d95a2c822cf6255ac099d5ded3a097d4e7b7..ea5e4e8790ffb27bac55af2ddf331261c5f32a69 100755
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h
@@ -101,12 +101,16 @@ class HLTTauMonTool : public IHLTMonTool {
 //  StatusCode TauEfficiencyCombo(const std::string & trigItem);
 
   StatusCode RealZTauTauEfficiency();
+  StatusCode dijetFakeTausEfficiency();
+  StatusCode FTKtest(const std::string & trigItem);
+  StatusCode trackCurves(const std::string & trigItem);
 
   //Methods for HLT and L1 Matching
   bool HLTTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR);
+  bool PresTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR);
   bool L1TauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR);
-  bool  emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min);
-  StatusCode test2StepTracking();
+  //  bool  emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min);
+  //StatusCode test2StepTracking();
   void testClusterNavigation(const xAOD::TauJet *aEFTau);
   void testL1TopoNavigation(const std::string & trigItem);
   float PrescaleRetrieval(const std::string & trigItem, const std::string & level);
@@ -117,6 +121,8 @@ class HLTTauMonTool : public IHLTMonTool {
   float m_selection_absEtaMax, m_selection_absEtaMin;
   float m_selection_absPhiMax, m_selection_absPhiMin; 
 
+  bool TruthMatched( const xAOD::TauJet * tau);
+
   StatusCode Emulation();
   std::string LowerChain(std::string hlt_item);
   /// Method for managing the histogram divisions
@@ -145,9 +151,12 @@ class HLTTauMonTool : public IHLTMonTool {
   bool m_turnOnCurves;
   std::string m_turnOnCurvesDenom;
   bool m_truth;
-  bool m_doTestTracking;
+  //bool m_doTestTracking;
   bool m_emulation;
   bool m_RealZtautauEff;
+  bool m_dijetFakeTausEff;
+  bool m_doFTKtest;
+  bool m_doTrackCurves;
   bool m_doTopoValidation;
   std::vector<std::string> CutItems;
   std::vector<std::string> TauCutFlow;
@@ -170,6 +179,8 @@ class HLTTauMonTool : public IHLTMonTool {
   ///Set by job options
   std::vector<std::string> m_trigItems;
   std::vector<std::string> m_trigItemsAll;
+  std::vector<std::string> m_trigItemsHighPt;
+  std::vector<std::string> m_highpt_tau;
   std::vector<std::string> m_primary_tau;
   std::vector<std::string> m_monitoring_tau;
   std::vector<std::string> m_prescaled_tau;
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_L1Topo.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_L1Topo.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..fa5c299a386e0f99e0493016d354353cea26923b
--- /dev/null
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_L1Topo.cxx
@@ -0,0 +1,287 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/**    @file HLTTauMonTool.cxx
+ *
+ *    Artur Kalinowski (Artur.Kalinowski@cern.ch)
+ *    Based on HLTMonTool example by Christiane Risler and Martin zur Nedden
+ *    Maintained by ccuenca, jengbou
+ */
+
+#include "GaudiKernel/IJobOptionsSvc.h"
+#include "AthenaMonitoring/AthenaMonManager.h"
+#include "AthenaMonitoring/ManagedMonitorToolTest.h"
+#include "AnalysisUtils/AnalysisMisc.h"
+
+#include "GaudiKernel/MsgStream.h"
+#include "GaudiKernel/StatusCode.h"
+#include "GaudiKernel/ITHistSvc.h"
+#include "GaudiKernel/PropertyMgr.h"
+#include "GaudiKernel/IToolSvc.h"
+#include "StoreGate/StoreGateSvc.h"
+#include "EventInfo/TriggerInfo.h"
+#include "TrigSteeringEvent/HLTResult.h"
+#include "EventInfo/EventInfo.h"
+#include <EventInfo/EventID.h>
+#include "xAODEventInfo/EventInfo.h"
+
+#include "TrigDecisionTool/FeatureContainer.h"
+#include "TrigDecisionTool/Feature.h"
+#include "TrigSteeringEvent/TrigOperationalInfo.h"
+#include "TrigSteeringEvent/TrigOperationalInfoCollection.h"
+#include "TrigSteeringEvent/TrigRoiDescriptor.h"
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
+
+#include "TrigSteeringEvent/TrigOperationalInfoCollection.h"
+
+#include "TrigConfL1Data/PrescaleSet.h"
+
+#include "TrigTauEmulation/Level1EmulationTool.h"
+#include "TrigTauEmulation/HltEmulationTool.h"
+
+#include "xAODTau/TauJet.h"
+#include "xAODTau/TauJetContainer.h"
+#include "xAODTau/TauJetAuxContainer.h"
+#include "xAODTau/TauDefs.h"
+
+#include "xAODTrigger/EmTauRoI.h"
+#include "xAODTrigger/EmTauRoIContainer.h"
+
+#include "xAODTruth/TruthParticleContainer.h"
+#include "xAODTruth/TruthParticle.h"
+#include "xAODTruth/TruthVertex.h"
+#include "xAODTruth/TruthVertexContainer.h"
+
+#include "xAODTracking/TrackParticle.h"
+#include "xAODTracking/TrackParticleContainer.h"
+
+#include "xAODMissingET/MissingET.h"
+#include "xAODMissingET/MissingETContainer.h"
+
+#include "xAODMuon/Muon.h"
+#include "xAODMuon/MuonContainer.h"
+
+#include "xAODEgamma/Electron.h"
+#include "xAODEgamma/ElectronContainer.h"
+
+#include "xAODJet/Jet.h"
+#include "xAODJet/JetContainer.h"
+
+#include "VxVertex/VxContainer.h"
+
+#include "TROOT.h"
+#include "TH1I.h"
+#include "TH1F.h"
+#include "TH2I.h"
+#include "TH2F.h"
+#include "TEfficiency.h"
+#include "TProfile.h"
+
+#include <vector>
+#include <iostream>
+#include <fstream>
+//#define _USE_MATH_DEFINES
+#include <math.h>
+
+
+#include "TrigHLTMonitoring/IHLTMonTool.h"
+
+#include "HLTTauMonTool.h"
+
+
+using namespace std;
+using namespace AnalysisUtils;
+
+const float PI=2.0*acos(0.);
+const float TWOPI=2.0*PI;
+
+StatusCode HLTTauMonTool::fillTopoValidation(const std::string & trigItem_topo, const std::string & trigItem_support){
+
+//	if(!getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)) return StatusCode::SUCCESS;
+
+	const xAOD::JetRoIContainer *l1jets = 0;
+        const xAOD::EmTauRoIContainer *l1taus = 0;
+
+	if ( m_storeGate->retrieve( l1jets, "LVL1JetRoIs").isFailure() ){
+		ATH_MSG_WARNING("Failed to retrieve LVL1JetRoIs container. Exiting.");
+		//return StatusCode::FAILURE;
+	}
+	if ( m_storeGate->retrieve( l1taus, "LVL1EmTauRoIs").isFailure() ){
+                ATH_MSG_WARNING("Failed to retrieve LVL1EmTauRoIs container. Exiting.");
+                //return StatusCode::FAILURE;
+        }
+   
+	xAOD::JetRoIContainer::const_iterator itJetRoI;
+	xAOD::JetRoIContainer::const_iterator itJetRoI_e = l1jets->end();
+	xAOD::EmTauRoIContainer::const_iterator itEMTau = l1taus->begin();
+	xAOD::EmTauRoIContainer::const_iterator itEMTau_e = l1taus->end();
+
+	if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition) && !getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)){
+		setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation");
+		hist("hSupportMismatch")->Fill(trigItem_topo.c_str(),1.);
+		return StatusCode::SUCCESS;
+	}
+	if(!getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)) return StatusCode::SUCCESS;
+
+	setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation/"+trigItem_topo);
+	Trig::FeatureContainer f = ( getTDT()->features(trigItem_support,m_L1TriggerCondition) );
+	Trig::FeatureContainer::combination_const_iterator comb(f.getCombinations().begin()), combEnd(f.getCombinations().end());
+
+	float min_dR(100.);
+	//        float min_dR_nojets(100.);
+	//        float min_dR_jets(100.);
+	//        float min_dR_Bothjets(100.);
+	//        float min_dR_Mixjets(100.);
+	//        float min_dR_notaus(100.);
+	//        float min_dR_taus(100.);
+       	float min_dR_Bothtaus(100.);
+	float min_dR_BothtausJet(100.);
+	float min_dR_BothtausJetN(100.);
+	//        float min_dR_Mixtaus(100.);
+	//        float min_dR_tauJets(100.);
+	//        float min_dR_NotauJets(100.);
+	//        float min_dR_tauNoJets(100.);
+	//        float min_dR_NotauNoJets(100.);
+        bool disambiguation = false;
+        int MultiJets = 0;
+        int MultiTaus =0;
+        std::vector<float> tau_val_roi;
+        std::vector<float> pt_jet_roi;
+        std::vector<float> eta_roi;
+        std::vector<float> phi_roi;
+
+        std::vector<bool> jet_roi;
+
+        int index_tau12 = -100, index_tau20 = -100;
+        int indexJet_tau12= -100, indexJet_tau20 = -100; 
+
+        double roi_pt_max_jet = -1000.;
+        double roi_pt_max = -1000.;
+	for(;comb!=combEnd;++comb){
+		const std::vector< Trig::Feature<TrigRoiDescriptor> > vec_roi = comb->get<TrigRoiDescriptor>("initialRoI",m_L1TriggerCondition);
+		std::vector< Trig::Feature<TrigRoiDescriptor> >::const_iterator roi = vec_roi.begin(), roi1 = vec_roi.begin(), roi_e = vec_roi.end();
+
+                for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){
+                        jet_roi.push_back(false);
+                        tau_val_roi.push_back(0.0);
+			phi_roi.push_back(roi->cptr()->phi());
+			eta_roi.push_back(roi->cptr()->eta());
+			pt_jet_roi.push_back(-1000.);
+                       
+                        roi_pt_max = -1000.;
+                        roi_pt_max_jet = -1000.;
+                        bool isJet = false;
+                        for(itJetRoI = l1jets->begin(); itJetRoI!=itJetRoI_e; ++itJetRoI){
+                          double roi_pt = (*itJetRoI)->etLarge();
+                                if(roi->cptr()->roiWord()==(*itJetRoI)->roiWord() && roi_pt > 25000.) {isJet=true;jet_roi.back()=true; if (roi_pt>roi_pt_max_jet) roi_pt_max_jet=roi_pt;pt_jet_roi.back()=roi_pt_max_jet;}
+                        }
+                        if (isJet) MultiJets++;
+                        bool isTau = false;
+                        for(itEMTau = l1taus->begin(); itEMTau!=itEMTau_e; ++itEMTau){
+                          double roi_pt = (*itEMTau)->tauClus();
+                          float m_iso_offset = 2000.;
+                          float m_iso_slope = 0.1;
+                          float isolation_cut = m_iso_offset + m_iso_slope * roi_pt;
+                          double roi_isol = (*itEMTau)->emIsol();
+                                if(roi->cptr()->roiWord()==(*itEMTau)->roiWord() &&
+                                    roi_pt > 12000. &&
+                                    roi_isol <= isolation_cut) {
+                                        isTau = true;
+                                        if (roi_pt>roi_pt_max) roi_pt_max=roi_pt;
+                                        tau_val_roi.back()=roi_pt_max;
+                                    }
+                          }
+                          if (isTau) MultiTaus++;
+                }
+
+          }
+
+        for (unsigned int i = 0; i < phi_roi.size(); ++i) {
+            for (unsigned int j = i + 1; j < phi_roi.size(); ++j) {
+                if ((tau_val_roi.at(i) > 12000.0 && tau_val_roi.at(j) > 20000.0) ||
+                    (tau_val_roi.at(i) > 20000.0 && tau_val_roi.at(j) > 12000.0)) {
+                    float dR = deltaR(eta_roi.at(i),eta_roi.at(j),phi_roi.at(i),phi_roi.at(j));
+                    if (dR >= 0.3) {
+			if (dR < min_dR) min_dR = dR;
+                        if (dR < min_dR_Bothtaus) {
+                            min_dR_Bothtaus = dR;
+                            if (tau_val_roi.at(i) > 12000.0 && tau_val_roi.at(j) > 20000.0) {
+                              index_tau12 = i;
+                              index_tau20 = j;
+                            } else {
+                              index_tau12 = j;
+                              index_tau20 = i;
+                            }
+                          }
+                        
+                        bool triggerJet = false;
+                        for (unsigned int k = 0; k < phi_roi.size(); ++k) {
+                          if (jet_roi.at(k)) {
+                            float dR1 = deltaR(eta_roi.at(i),eta_roi.at(k),phi_roi.at(i),phi_roi.at(k));
+                            float dR2 = deltaR(eta_roi.at(j),eta_roi.at(k),phi_roi.at(j),phi_roi.at(k));
+                            if (dR > 0.1 && dR1 > 0.1 && dR2 > 0.1 ) disambiguation = true;
+                            triggerJet = true;
+                           }
+                         } 
+
+                        if (triggerJet) {
+                          if (dR < min_dR_BothtausJet) {
+                            min_dR_BothtausJet = dR;
+                            if (tau_val_roi.at(i) > 12000.0 && tau_val_roi.at(j) > 20000.0) {
+                              indexJet_tau12 = i;
+                              indexJet_tau20 = j;
+                            } else {
+                              indexJet_tau12 = j;
+                              indexJet_tau20 = i;
+                            }
+                          }
+                        } else {
+                          if (dR < min_dR_BothtausJetN) {
+                            min_dR_BothtausJetN = dR;
+                           }
+                        }
+                     } 
+                 }
+             }
+        }
+        hist("hDisambiguation")->Fill(1.);
+	if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)){
+        	hist("hDRBothtaus")->Fill(min_dR_Bothtaus);
+        	hist("hDRBothtausJet")->Fill(min_dR_BothtausJet);
+        	hist("hDRBothtausJetN")->Fill(min_dR_BothtausJetN);
+ 
+                if (phi_roi.size() >= 1 &&min_dR_Bothtaus>2.8 && min_dR_Bothtaus < 50.) {
+        	  if (index_tau20 > 0) hist("hPTLeading")->Fill(tau_val_roi.at(index_tau20)/1000.);
+        	  if (index_tau12 > 0) hist("hPTSubLeading")->Fill(tau_val_roi.at(index_tau12)/1000.);
+        	  if (index_tau20 > 0) hist("hEtaLeading")->Fill(eta_roi.at(index_tau20));
+        	  if (index_tau12 > 0) hist("hEtaSubLeading")->Fill(eta_roi.at(index_tau12));
+        	  if (index_tau20 > 0) hist("hPhiLeading")->Fill(phi_roi.at(index_tau20));
+        	  if (index_tau12 > 0) hist("hPhiSubLeading")->Fill(phi_roi.at(index_tau12));
+        	  hist("hMultiTaus")->Fill(MultiTaus);
+        	  hist("hMultiJets")->Fill(MultiJets);
+                }
+                if (phi_roi.size() >= 1 &&min_dR_BothtausJet>2.8 && min_dR_BothtausJet < 50.) {
+        	  if (indexJet_tau20 > 0) hist("hPTLeadingJet")->Fill(tau_val_roi.at(indexJet_tau20)/1000.);
+        	  if (indexJet_tau12 > 0) hist("hPTSubLeadingJet")->Fill(tau_val_roi.at(indexJet_tau12)/1000.);
+        	  if (indexJet_tau20 > 0) hist("hEtaLeadingJet")->Fill(eta_roi.at(indexJet_tau20));
+        	  if (indexJet_tau12 > 0) hist("hEtaSubLeadingJet")->Fill(eta_roi.at(indexJet_tau12));
+        	  if (indexJet_tau20 > 0) hist("hPhiLeadingJet")->Fill(phi_roi.at(indexJet_tau20));
+        	  if (indexJet_tau12 > 0) hist("hPhiSubLeadingJet")->Fill(phi_roi.at(indexJet_tau12));
+        	  hist("hMultiTausJet")->Fill(MultiTaus);
+        	  hist("hMultiJetsJet")->Fill(MultiJets);
+                }
+ 
+        	if (disambiguation) hist("hDisambiguation")->Fill(2.);
+        	if (!disambiguation) hist("hDisambiguation")->Fill(3.);
+        } else {
+        	hist("hDRBothtaus_noTopo")->Fill(min_dR_Bothtaus);
+        	hist("hDRBothtausJet_noTopo")->Fill(min_dR_BothtausJet);
+        	hist("hDRBothtausJetN_noTopo")->Fill(min_dR_BothtausJetN);
+        	if (disambiguation) hist("hDisambiguation")->Fill(4.);
+        	if (!disambiguation) hist("hDisambiguation")->Fill(5.);
+        }
+	return StatusCode::SUCCESS;
+
+}
+
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx
index 46bb866f8db591937d608b5a844035f178c8baef..79af4821d13ddeefbd703b38701c1b122a63b84b 100644
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx
@@ -2,7 +2,7 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-/*    @file HLTTauMonTool_Ztautauemulation.cxx
+/*    @file HLTTauMonTool_Ztautau.cxx
  *    
  *    Real Ztauau L1 & HLT trigger efficiency 
  *    created by Babar Ali (babar.ali@cern.ch)
@@ -69,6 +69,7 @@
 #include "TH2I.h"
 #include "TH2F.h"
 #include "TEfficiency.h"
+#include "TProfile.h"
 
 #include <vector>
 #include <iostream>
@@ -87,13 +88,11 @@ using namespace std;
 StatusCode HLTTauMonTool::RealZTauTauEfficiency()
 {
   ATH_MSG_DEBUG("Real ZTauTau Efficiency");  
-  setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff");
-
-  const xAOD::TauJetContainer * reco_cont = 0;
-  const xAOD::MuonContainer * muon_cont = 0;
-  const xAOD::MissingETContainer *m_off_met_cont = 0;
-  const xAOD::TruthParticleContainer* truth_cont = 0;
-  
+ 
+  const xAOD::TauJetContainer    * reco_cont      = 0;
+  const xAOD::MuonContainer      * muon_cont      = 0;
+  const xAOD::MissingETContainer * m_off_met_cont = 0;
+    
   if( evtStore()->retrieve(reco_cont, "TauJets").isFailure() )
     {
       ATH_MSG_WARNING("Failed to retrieve  TauJets container. Exiting.");
@@ -110,224 +109,171 @@ StatusCode HLTTauMonTool::RealZTauTauEfficiency()
       ATH_MSG_WARNING("Could not retrieve Reconstructed MET term with Key MET_Reference_AntiKt4LCTopo : m_off_met_cont = 0");
     }
   
-  if(evtStore()->retrieve(truth_cont, "TruthParticles" ).isFailure())
-    {
-      ATH_MSG_WARNING("Failed to retrieve TruthParticle container. Exiting.");
-      return StatusCode::FAILURE;
-    }
-  
-  hist("hCutFlow")->Fill(CutItems.at(0).c_str(),1.);
-  hist("hTauCutFlow")->Fill(TauCutFlow.at(0).c_str(),1.);
-  hist("hMuCutFlow")->Fill(MuCutFlow.at(0).c_str(),1.);
-
-  TLorentzVector Tau_TLV(0.,0.,0.,0.);
+  TLorentzVector Tau_TLV (0.,0.,0.,0.);
   TLorentzVector Muon_TLV(0.,0.,0.,0.);
-  TLorentzVector MET_TLV(0.,0.,0.,0.);
-
-  double tauPt_dum = -1., muPt_dum = -1.;
-  float Tau_charge = -99.0, Muon_charge = -99.0;
-  bool selected_tau = false, selected_mu = false;
-  int Tau_ntrack = -1, count_selected_tau = 0, count_selected_mu = 0, count_cand_tau = 0, count_cand_mu = 0;
- 
-  xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end();
-  for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr)
-    {
-    TLorentzVector TauTLV = (*recoItr)->p4();
-    double pt_Tau = TauTLV.Pt();
-    double eta_Tau = TauTLV.Eta();
-    double phi_Tau = TauTLV.Phi();
-    int ntrack_Tau = (*recoItr)->nTracks();
-    bool good_Tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium);
-    float charge_Tau = (*recoItr)->charge();
+  TLorentzVector MET_TLV (0.,0.,0.,0.);
 
-    hist("hRealBSTauPt")->Fill(pt_Tau/1000.);
-    hist("hRealBSTauEta")->Fill(eta_Tau);
-    hist("hRealBSTauPhi")->Fill(phi_Tau);
-    hist("hRealBSTauNTrack")->Fill(ntrack_Tau);
+  double tauPt_dum  = -1.  , muPt_dum    = -1.;
+  float  Tau_charge = -99.0, Muon_charge = -99.0;
+  bool   lead_tau   = false, single_mu   = false;
   
-    count_cand_tau++;
-    if(pt_Tau<20000.) continue;
-    hist("hTauCutFlow")->Fill(TauCutFlow.at(1).c_str(),1.);
-    if(fabs(eta_Tau) > 2.47) continue;
-    hist("hTauCutFlow")->Fill(TauCutFlow.at(2).c_str(),1.);
-    if(fabs(charge_Tau) != 1.0) continue;
-    hist("hTauCutFlow")->Fill(TauCutFlow.at(3).c_str(),1.);
-    if(ntrack_Tau!=1 && ntrack_Tau!=3) continue;
-    hist("hTauCutFlow")->Fill(TauCutFlow.at(4).c_str(),1.);
-    if(!good_Tau) continue;
-    hist("hTauCutFlow")->Fill(TauCutFlow.at(5).c_str(),1.);
-    count_selected_tau++;
-    if(tauPt_dum < pt_Tau)
-      {
-	tauPt_dum = pt_Tau;
-	Tau_TLV.SetPtEtaPhiM(pt_Tau,eta_Tau,TauTLV.Phi(),TauTLV.M());
-	Tau_charge = charge_Tau;
-	Tau_ntrack = ntrack_Tau;
-	selected_tau = true;
-      }
-    }
-
-  hist("hRealSelectedTau")->Fill(count_selected_tau);
-  hist("hRealCandTau")->Fill(count_cand_tau);
-  hist("hRealASTauPt")->Fill(Tau_TLV.Pt()/1000.);
-  hist("hRealASTauEta")->Fill(Tau_TLV.Eta());
-  hist("hRealASTauPhi")->Fill(Tau_TLV.Phi());
-  hist("hRealASTauNTrack")->Fill(Tau_ntrack);
-
+  //Muon Selection
   xAOD::MuonContainer::const_iterator muonItr, muon_cont_end = muon_cont->end();
   for(muonItr=muon_cont->begin(); muonItr!=muon_cont_end; ++muonItr)
     {
       const xAOD::Muon& muon = **muonItr;
       TLorentzVector MuonTLV = (*muonItr)->p4();
-      double pt_mu = MuonTLV.Pt();
-      double eta_mu = MuonTLV.Eta();
-      double phi_mu = MuonTLV.Phi();
-      
-      ATH_MSG_DEBUG("Muon Type " << (*muonItr)->muonType());
-      ATH_MSG_DEBUG("Muon quality " << (*muonItr)->quality());
-      ATH_MSG_DEBUG("MuonAuthor " << (*muonItr)->author());
       
-      hist("hRealBSMuPt")->Fill(pt_mu/1000.);
-      hist("hRealBSMuEta")->Fill(eta_mu);
-      hist("hRealBSMuPhi")->Fill(phi_mu);
+      double pt_mu  = MuonTLV.Pt();
+      double eta_mu = MuonTLV.Eta();
+      float  etcone = 0.0, ptcone = 0.0, etcone40Rel = 0.0, ptcone40Rel = 0.0;
 
-      float etcone = 0.0, ptcone = 0.0, etcone20Rel = 0.0, ptcone20Rel = 0.0;
-      if (!muon.isolation(etcone,xAOD::Iso::etcone20))
+      if (!muon.isolation(etcone,xAOD::Iso::etcone40))
 	{
 	  ATH_MSG_WARNING("No EtCone defined for muon.");
 	}
       else
 	{
-	  etcone20Rel = etcone/pt_mu;
+	  etcone40Rel = etcone/pt_mu;
 	}
-      if (!muon.isolation(ptcone,xAOD::Iso::ptcone20))
+      if (!muon.isolation(ptcone,xAOD::Iso::ptcone40))
 	{
 	  ATH_MSG_WARNING("No ptCone defined for muon.");
 	}
       else
 	{
-	  ptcone20Rel = ptcone/pt_mu;
+	  ptcone40Rel = ptcone/pt_mu;
 	}
       
-      count_cand_mu++;
-      if(pt_mu<22000.) continue;
-      hist("hMuCutFlow")->Fill(MuCutFlow.at(1).c_str(),1.);
-      if(fabs(eta_mu)>2.4) continue;
-      hist("hMuCutFlow")->Fill(MuCutFlow.at(2).c_str(),1.);
+      if(pt_mu<27000. || pt_mu>1450000.)             continue;
+      if(fabs(eta_mu)>2.5)                           continue;
       if((*muonItr)->author() != xAOD::Muon::MuidCo) continue;
-      hist("hMuCutFlow")->Fill(MuCutFlow.at(3).c_str(),1.);
-      if(! muon.passesIDCuts() ) continue;
-      hist("hMuCutFlow")->Fill(MuCutFlow.at(4).c_str(),1.);
-      if(etcone20Rel > 0.2) continue;
-      hist("hMuCutFlow")->Fill(MuCutFlow.at(5).c_str(),1.);
-      if(ptcone20Rel > 0.06) continue;
-      hist("hMuCutFlow")->Fill(MuCutFlow.at(6).c_str(),1.);
-      count_selected_mu++;      
-      if(selected_mu)
+      if(! muon.passesIDCuts() )                     continue;
+      if(etcone40Rel > 0.1)                          continue;
+      if(ptcone40Rel > 0.2)                          continue;
+
+      if(single_mu)
 	{
-	  selected_mu = false;
-	  count_selected_mu = 0;
+	  single_mu = false;
 	  Muon_TLV.Clear();
 	  Muon_charge = -99;
 	  break;
-	  cout << " Found 2nd MUON : " << endl;
 	}
       if(muPt_dum < pt_mu)
 	{
 	  muPt_dum = pt_mu;
 	  Muon_TLV.SetPtEtaPhiM(pt_mu, eta_mu, MuonTLV.Phi(), MuonTLV.M());
 	  Muon_charge = (*muonItr)->charge();
-	  selected_mu = true;
+	  single_mu = true;
 	}
     }
-  hist("hRealSelectedMu")->Fill(count_selected_mu);
-  hist("hRealCandMu")->Fill(count_cand_mu);
-  hist("hRealASMuPt")->Fill(Muon_TLV.Pt()/1000.);
-  hist("hRealASMuEta")->Fill(Muon_TLV.Eta());
-  hist("hRealASMuPhi")->Fill(Muon_TLV.Phi());
 
+  //Tau Selection
+  xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end();
+  for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr)
+    {
+    TLorentzVector TauTLV = (*recoItr)->p4();
+    double pt_Tau     = TauTLV.Pt();
+    double eta_Tau    = TauTLV.Eta();
+    int    ntrack_Tau = (*recoItr)->nTracks();
+    bool   good_Tau   = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium);
+    float  charge_Tau = (*recoItr)->charge();
+        
+    if(pt_Tau<20000.)                  continue;
+    if(fabs(eta_Tau) > 2.47)           continue;
+    if(fabs(charge_Tau) != 1.0)        continue;
+    if(ntrack_Tau!=1 && ntrack_Tau!=3) continue;
+    if(!good_Tau)                      continue;
+    
+    //Over lap removal between Muon and Tau. Keep Muon remove Tau!!
+    if(single_mu)
+      {
+	if(Muon_TLV.DeltaR(TauTLV) < 0.3) continue;
+      }
+    else
+      {
+	break;
+      }
+    
+    if(tauPt_dum < pt_Tau) //Check for lead Tau after OLR
+      {
+	tauPt_dum = pt_Tau;
+	Tau_TLV.SetPtEtaPhiM(pt_Tau,eta_Tau,TauTLV.Phi(),TauTLV.M());
+	Tau_charge = charge_Tau;
+	lead_tau = true;
+      }
+    }
+
+  //Offline MET 
   const xAOD::MissingET  *m_off_met = 0;
-  float off_met = -9e9;
-  //float off_met_phi = -9e9;
+  float off_ex    = -9e9;
+  float off_ey    = -9e9;
+  float off_met   = -9e9;
+  //float off_sumet = -9e9;
+  //float off_phi   = -9e9;
   if (m_off_met_cont && m_off_met_cont->size())
     {
-      m_off_met = m_off_met_cont->at(0);
-      float off_ex = (m_off_met_cont->at(0)->mpx());
-      float off_ey = (m_off_met_cont->at(0)->mpy());
-      //off_met_phi =  (m_off_met_cont->at(0)->phi());
+      m_off_met = (*m_off_met_cont)["FinalClus"];
+      
+      off_ex = ((*m_off_met_cont)["FinalClus"]->mpx());
+      off_ey = ((*m_off_met_cont)["FinalClus"]->mpy());
       off_met = sqrt(off_ex*off_ex+off_ey+off_ey);
-      ATH_MSG_DEBUG("m_off_met:" << m_off_met );
       MET_TLV.SetPxPyPzE(off_ex,off_ey,0,off_met);
+      //off_sumet = ((*m_off_met_cont)["FinalClus"]->sumet());
+      //off_phi = atan2(off_ey, off_ex);
+      ATH_MSG_DEBUG("m_off_met:" << m_off_met );
     }
-  //MET
-  hist("hRealMET")->Fill(off_met/1000.);
+     
+  float  ltau_charge  = -99.0;
+  double ltau_vismass = -99.0;
+  double cos_dphi     = -99.0;
+  double mt           = -99.0;
+  double ltau_deta    =  99.0;
+  double ltau_dR      =  99.0;
   
-  float ltau_charge = -99.0;
-  double mltau_vis = -99.0;
-  double cos_dphi = -99.0;
-  double mt = -99.0;
-  double ltau_dphi = -99.0;
-
-  if(selected_tau) 
-    {
-      hist("hRealMuTau")->Fill(count_selected_mu); 
-      hist("hCutFlow")->Fill(CutItems.at(1).c_str(),1.);
-    }
-  if(selected_mu)
-    {
-      hist("hRealTauMu")->Fill(count_selected_tau);
-      hist("hCutFlow")->Fill(CutItems.at(2).c_str(),1.);
-    }
-  if(selected_tau && selected_mu)
+  //Events variables with Lead Tau and Single Muon
+  if(lead_tau && single_mu)
     {
-      hist("hCutFlow")->Fill(CutItems.at(3).c_str(),1.);   
-      
-      ltau_charge = Tau_charge + Muon_charge;
-      mltau_vis = (Tau_TLV + Muon_TLV).M();
-      cos_dphi = cos(Muon_TLV.DeltaPhi(MET_TLV)) + cos(Tau_TLV.DeltaPhi(MET_TLV)) ;
-      mt = sqrt(2 * Muon_TLV.Pt() * off_met * (1 - cos(Muon_TLV.DeltaPhi(MET_TLV)) ) );
-      ltau_dphi = Tau_TLV.DeltaPhi(Muon_TLV);
-     
-      //Tau vars
-      hist("hRealTauPt")->Fill(Tau_TLV.Pt()/1000.);
-      hist("hRealTauEta")->Fill(Tau_TLV.Eta());
-      hist("hRealTauPhi")->Fill(Tau_TLV.Phi());
-      hist("hRealTauNTrack")->Fill(Tau_ntrack);
-      hist("hRealTauCharge")->Fill(Tau_charge);
-      //Muon vars
-      hist("hRealMuPt")->Fill(Muon_TLV.Pt()/1000.);
-      hist("hRealMuEta")->Fill(Muon_TLV.Eta());
-      hist("hRealMuPhi")->Fill(Muon_TLV.Phi());
-      hist("hRealMuCharge")->Fill(Muon_charge);
-      //Cut vars
-      hist("hRealTauMuCosdPhi")->Fill(cos_dphi);	
-      hist("hRealMETMuTransMass")->Fill(mt/1000.);
-      hist("hRealTauMuVisMass")->Fill(mltau_vis/1000.);
-      hist("hRealTauMuDPhi")->Fill(ltau_dphi);
-      hist("hRealTauMuCharge")->Fill(ltau_charge);
+      ltau_charge  = Tau_charge + Muon_charge;
+      ltau_vismass = (Tau_TLV + Muon_TLV).M();
+      cos_dphi     = cos(Muon_TLV.DeltaPhi(MET_TLV)) + cos(Tau_TLV.DeltaPhi(MET_TLV)) ;
+      mt           = sqrt(2 * Muon_TLV.Pt() * off_met * (1 - cos(Muon_TLV.DeltaPhi(MET_TLV)) ) );
+      ltau_deta    = deltaEta(Tau_TLV.Eta(), Muon_TLV.Eta());
+      ltau_dR      = Tau_TLV.DeltaR(Muon_TLV);
     }
-    
-  if(ltau_charge == 0) hist("hCutFlow")->Fill(CutItems.at(4).c_str(),1.);
-  if(mltau_vis > 42000 && mltau_vis < 82000) hist("hCutFlow")->Fill(CutItems.at(5).c_str(),1.);
-  if(ltau_dphi > 2.4) hist("hCutFlow")->Fill(CutItems.at(6).c_str(),1.);
-      
-  //selection
-  if(ltau_charge == 0. &&
-     mltau_vis > 42000. && mltau_vis < 82000. &&
-     cos_dphi > -0.15 &&
-     mt < 50000. &&
-     ltau_dphi > 2.4)
+  
+  //Event Selection
+  if(ltau_charge == 0.     &&  
+     mt < 50000.           && 
+     cos_dphi > -0.5       && 
+     fabs(ltau_deta) < 1.5 && 
+     ltau_dR > 2.9         &&
+     ltau_vismass > 45000. && ltau_vismass < 85000.)
     {
       for(unsigned int i=0;i<m_trigItems.size();++i)
 	{
 	  std::string l1_chain(LowerChain("HLT_"+m_trigItems[i]));
 	  std::string hlt_chain = "HLT_"+m_trigItems[i];
+
 	  setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]);
 	  hist("hRealZttPtDenom")->Fill(Tau_TLV.Pt()/1000.);
-	  if(getTDT()->isPassed(l1_chain))  hist("hRealZttL1PtNum")->Fill(Tau_TLV.Pt()/1000.);
-	  if(getTDT()->isPassed(hlt_chain)) hist("hRealZttHLTPtNum")->Fill(Tau_TLV.Pt()/1000.);
+
+	  //L1
+	  if(getTDT()->isPassed(l1_chain , TrigDefs::Physics | TrigDefs::allowResurrectedDecision))
+	    {
+	      hist("hRealZttL1PtNum")->Fill(Tau_TLV.Pt()/1000.);
+	      profile("TProfRealZttL1PtEfficiency")->Fill(Tau_TLV.Pt()/1000.,1);
+	    }
+	  else profile("TProfRealZttL1PtEfficiency")->Fill(Tau_TLV.Pt()/1000.,0);
+
+	  //HLT
+	  if(getTDT()->isPassed(hlt_chain, TrigDefs::Physics | TrigDefs::allowResurrectedDecision))
+	    {
+	      hist("hRealZttHLTPtNum")->Fill(Tau_TLV.Pt()/1000.);
+	      profile("TProfRealZttHLTPtEfficiency")->Fill(Tau_TLV.Pt()/1000.,1);
+	    }
+	  else profile("TProfRealZttHLTPtEfficiency")->Fill(Tau_TLV.Pt()/1000.,0);
 	}
     }
-     
   return StatusCode::SUCCESS;
 }
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx
index eb47fe6636f781aabef870b43d549263d090cfe0..cc7796727da39f830da03fdb573d35f8e3dc8758 100644
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx
@@ -92,14 +92,18 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
     
     const int nbin_pt = 13;
     double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.,200.};
+
+
 //    const int nbin_leppt = 32;
 //    double bins_leppt[nbin_leppt] = {10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,26.,27.,28.,29.,30.,32.,34.,36.,38.,40.,45.,50.,60.,70.,80.,100.};
     const int nbin_eta = 9;
     double bins_eta[nbin_eta] = {-2.47,-1.52,-1.37,-0.69,0.,0.69,1.37,1.52,2.47};
     const int nbin_nvtx = 6;
     double bins_nvtx[nbin_nvtx] = {0.,5.,10.,15.,20.,25.};
-    const int nbin_mu = 21;
-    float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40.};
+    const int nbin_mu = 33;
+    float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40., 42., 44., 44., 46., 48., 50., 52., 54., 56., 58., 60., 62};
+
+
 //    const int nbin_met = 14;
 //    double bins_met[nbin_met] = {0.,5.,10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.};
 //    const int nbin_dr = 18;
@@ -127,12 +131,12 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
     addHistogram(new TH2F("hL1EtVsPhi","L1 RoI Et vs Phi; E_{T}[GeV]; #phi",100,0.,100.,100,-3.2,3.2));
     addHistogram(new TH2F("hL1EtVsEta","L1 RoI Et vs Eta; E_{T}[GeV]; #eta",100,0.,100.,100,-2.6,2.6));   
 
-    addHistogram(new TH1F("hL1JetRoIEta","L1 Jet RoI Eta ; #eta; N RoI",100,-3.2,3.2));
-    addHistogram(new TH1F("hL1JetRoIPhi","L1 Jet RoI Phi ; #phi; N RoI",100,-3.2,3.2));
-    addHistogram(new TH2F("hL1JetEtaVsPhi","L1 Jet RoI Eta vs Phi; #eta; #phi",100,-3.2,3.2,100,-3.2,3.2));
+    addHistogram(new TH1F("hL1JetRoIEta","L1 Jet RoI Eta ; #eta; N RoI",32,-3.2,3.2));
+    addHistogram(new TH1F("hL1JetRoIPhi","L1 Jet RoI Phi ; #phi; N RoI",32,-3.2,3.2));
+    addHistogram(new TH2F("hL1JetEtaVsPhi","L1 Jet RoI Eta vs Phi; #eta; #phi",32,-3.2,3.2,32,-3.2,3.2));
     addHistogram(new TH1F("hL1JetRoIeT","L1 Jet RoI Energy; E_{T}[GeV]; N RoI",200,0.,100.));
-    addHistogram(new TH2F("hL1JetEtVsPhi","L1 Jet RoI Et vs Phi; E_{T}[GeV]; #phi",100,0.,100.,100,-3.2,3.2));
-    addHistogram(new TH2F("hL1JetEtVsEta","L1 Jet RoI Et vs Eta; E_{T}[GeV]; #eta",100,0.,100.,100,-3.2,3.2));
+    addHistogram(new TH2F("hL1JetEtVsPhi","L1 Jet RoI Et vs Phi; E_{T}[GeV]; #phi",100,0.,100.,32,-3.2,3.2));
+    addHistogram(new TH2F("hL1JetEtVsEta","L1 Jet RoI Et vs Eta; E_{T}[GeV]; #eta",100,0.,100.,32,-3.2,3.2));
 
     //--------------------
     //Pre-selection Tau
@@ -145,7 +149,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
     addHistogram(new TH1F("hFTFnTrack","EF number of tracks;number of tracks;Nevents",10,0,10));
     addHistogram(new TH1F("hEta","EF TrigCaloCluster Eta; #eta ; Nevents",26,-2.6,2.6));
     addHistogram(new TH1F("hPhi","EF TrigCaloCluster Phi; #phi ; Nevents",32,-3.2,3.2));
-    addHistogram(new TH1F("hdRmax","EF deltaR max; dRmax ; Nevents",52,-0.02,0.5));
+    //addHistogram(new TH1F("hdRmax","EF deltaR max; dRmax ; Nevents",52,-0.02,0.5));
     addHistogram(new TH2F("hEFEtaVsPhi","EF TrigCaloCluster Eta vs Phi; #eta ; #phi ; Nevents",
                           26,-2.6,2.6,32,-3.2,3.2));
     addHistogram(new TH2F("hEtVsEta","Et from tau Jet vs #eta; #eta^{EF}; Raw E_{T}[GeV]",
@@ -162,6 +166,8 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
     //Basic kinematic variables
     addHistogram(new TH1F("hEFEt","EF Et;E_{T}[GeV];Nevents",50,0.0,100.0));
     addHistogram(new TH1F("hEFEta","EF TrigCaloCluster Eta; #eta ; Nevents",26,-2.6,2.6));
+    addHistogram(new TH1F("hEFNUM","EF Number of vertex; N_(vertex) ; Nevents",50,15,65));
+    addHistogram(new TH2F("hEFNUMvsmu","Number of vertex vs offline mu; N_(vertex) ; #mu",  50,15,65,50,15,65));
     addHistogram(new TH1F("hEFPhi","EF TrigCaloCluster Phi; #phi ; Nevents",16,-3.2,3.2));
     addHistogram(new TH1F("hEFnTrack","EF number of tracks;number of tracks;Nevents",10,0,10));
     addHistogram(new TH2F("hEFEtaVsPhi","EF TrigCaloCluster Eta vs Phi; #eta ; #phi ; Nevents",26,-2.6,2.6,16,-3.2,3.2));
@@ -294,7 +300,8 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addProfile(new TProfile("hEtRatiovsmu","Relative difference in Et (EF-Truth)/Truth vs mu;Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
     }
     //-------------------
-    //EF vs Offline
+   
+//EF vs Offline
     //-------------------
     addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/"+trigItem+"/EFVsOffline",run));
     setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/EFVsOffline");   
@@ -326,7 +333,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
     
     //addProfile(new TProfile("hEMRadiusRatiovspt","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau pT;Offline Tau pT;",nbin_pt-1,bins_pt));
     //addProfile(new TProfile("hEMRadiusRatiovseta","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau eta;Offline Tau #eta;",nbin_eta-1,bins_eta));
-    //addProfile(new TProfile("hEMRadiusRatiovsphi","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau phi;Offline Tau #phi;",40,-3.2,3.2));
+//addProfile(new TProfile("hEMRadiusRatiovsphi","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau phi;Offline Tau #phi;",40,-3.2,3.2));
     //addProfile(new TProfile("hEMRadiusRatiovsmu","Relative difference in EMRadius (EF-Offline)/Offline vs mu;Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
     
     //addProfile(new TProfile("hHADRadiusRatiovspt","Relative difference in HADRadius (EF-Offline)/Offline vs Offline Tau pT;Offline Tau pT;",nbin_pt-1,bins_pt));
@@ -432,16 +439,17 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             //Truth
             addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/TruthEfficiency",run) );
             setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/TruthEfficiency"); 
-            addHistogram(new TH1F("hTrueTauPtDenom",";Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
+	    /*            addHistogram(new TH1F("hTrueTauPtDenom",";Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueTauPt1PDenom",";Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueTauPt3PDenom",";Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueTauEtaDenom",";#eta;",nbin_eta-1,bins_eta));
             addHistogram(new TH1F("hTrueTauPhiDenom",";#phi;",16,-3.2,3.2));
             addHistogram(new TH1F("hTrueTauNTrackDenom",";Number of tracks;",10,0,10));
             addHistogram(new TH1F("hTrueTauNVtxDenom",";Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
-            addHistogram(new TH1F("hTrueTauMuDenom",";Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+            addHistogram(new TH1F("hTrueTauMuDenom",";Average interactions per bunch crossing;",nbin_mu-1,bins_mu));*/
             addHistogram(new TH2F("hTrueTauEtaVsPhiDenom",";#eta; #phi;",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
+	    /*
             addHistogram(new TH1F("hTrueL1PtNum","L1 vs Truth;Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueL1Pt1PNum","L1 vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueL1Pt3PNum","L1 vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
@@ -450,8 +458,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTrueL1NTrackNum","L1 vs Truth;Number of tracks;",10,0,10));
             addHistogram(new TH1F("hTrueL1NVtxNum","L1 vs Truth;Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTrueL1MuNum","L1 vs Truth;Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTrueL1EtaVsPhiNum","L1 vs Truth;#eta;#phi;",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
+	    /*
             addHistogram(new TH1F("hTrueHLTPtNum","HLT vs Truth;Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueHLTPt1PNum","HLT vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueHLTPt3PNum","HLT vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
@@ -460,9 +470,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTrueHLTNTrackNum","HLT vs Truth;Number of tracks;",10,0,10));
             addHistogram(new TH1F("hTrueHLTNVtxNum","HLT vs Truth;Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTrueHLTMuNum","HLT vs Truth;Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTrueHLTEtaVsPhiNum","HLT vs Truth;#eta;#phi;",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
-            addHistogram(new TH1F("hTrueL1PtEfficiency","L1 vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+	    /*            addHistogram(new TH1F("hTrueL1PtEfficiency","L1 vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueL1Pt1PEfficiency","L1 vs Truth Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueL1Pt3PEfficiency","L1 vs Truth Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueL1EtaEfficiency","L1 vs Truth Efficiency; Truth #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -470,8 +481,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTrueL1NTrackEfficiency","L1 vs Truth Efficiency; Number of tracks; Efficiency",10,0,10));
             addHistogram(new TH1F("hTrueL1NVtxEfficiency","L1 vs Truth Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTrueL1MuEfficiency","L1 vs Truth Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTrueL1EtaVsPhiEfficiency","L1 vs Truth in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-            
+            /*
             addHistogram(new TH1F("hTrueHLTPtEfficiency","HLT vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueHLTPt1PEfficiency","HLT vs Truth Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTrueHLTPt3PEfficiency","HLT vs Truth Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
@@ -480,6 +492,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTrueHLTNTrackEfficiency","HLT vs Truth Efficiency; Number of tracks; Efficiency",10,0,10));
             addHistogram(new TH1F("hTrueHLTNVtxEfficiency","HLT vs Truth Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTrueHLTMuEfficiency","HLT vs Truth Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTrueHLTEtaVsPhiEfficiency","HLT vs truth in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
             addProfile(new TProfile("TProfTrueL1PtEfficiency","L1 vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
@@ -504,7 +517,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             //Truth+Reco
             addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/Truth+RecoEfficiency",run) );
             setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/Truth+RecoEfficiency");            
-            addHistogram(new TH1F("hTruthRecoTauPtDenom","Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
+	    /*            addHistogram(new TH1F("hTruthRecoTauPtDenom","Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoTauPt1PDenom",";Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoTauPt3PDenom",";Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoTauEtaDenom",";#eta;",nbin_eta-1,bins_eta));
@@ -512,8 +525,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTruthRecoTauNTrackDenom",";Number of tracks;",10,0,10));
             addHistogram(new TH1F("hTruthRecoTauNVtxDenom",";Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTruthRecoTauMuDenom",";Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTruthRecoTauEtaVsPhiDenom",";#eta;#phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-            
+            /*
             addHistogram(new TH1F("hTruthRecoL1PtNum","L1 vs Truth+Reco; Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoL1Pt1PNum","L1 vs Truth+Reco; Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoL1Pt3PNum","L1 vs Truth+Reco; Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
@@ -522,9 +536,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTruthRecoL1NTrackNum","L1 vs Truth+Reco; Number of tracks;",10,0,10));
             addHistogram(new TH1F("hTruthRecoL1NVtxNum","L1 vs Truth+Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTruthRecoL1MuNum","L1 vs Truth+Reco;Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTruthRecoL1EtaVsPhiNum","L1 vs Truth+Reco;#eta;#phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
-            addHistogram(new TH1F("hTruthRecoHLTPtNum","HLT vs Truth+Reco; Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
+	    /*            addHistogram(new TH1F("hTruthRecoHLTPtNum","HLT vs Truth+Reco; Truth p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoHLTPt1PNum","HLT vs Truth+Reco; Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoHLTPt3PNum","HLT vs Truth+Reco; Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoHLTEtaNum","HLT vs Truth+Reco; #eta;",nbin_eta-1,bins_eta));
@@ -532,8 +547,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTruthRecoHLTNTrackNum","HLT vs Truth+Reco; Number of tracks;",10,0,10));
             addHistogram(new TH1F("hTruthRecoHLTNVtxNum","HLT vs Truth+Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTruthRecoHLTMuNum","HLT vs Truth+Reco; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTruthRecoHLTEtaVsPhiNum","HLT vs Truth+Reco; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
+	    /*
             addHistogram(new TH1F("hTruthRecoL1PtEfficiency","L1 vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoL1Pt1PEfficiency","L1 vs Truth+Reco Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoL1Pt3PEfficiency","L1 vs Truth+Reco Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
@@ -542,9 +559,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTruthRecoL1NTrackEfficiency","L1 vs Truth+Reco Efficiency; Number of tracks; Efficiency",10,0,10));
             addHistogram(new TH1F("hTruthRecoL1NVtxEfficiency","L1 vs Truth+Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTruthRecoL1MuEfficiency","L1 vs Truth+Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTruthRecoL1EtaVsPhiEfficiency","L1 vs Truth+Reco in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
-            addHistogram(new TH1F("hTruthRecoHLTPtEfficiency","HLT vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+            /*addHistogram(new TH1F("hTruthRecoHLTPtEfficiency","HLT vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoHLTPt1PEfficiency","HLT vs Truth+Reco Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoHLTPt3PEfficiency","HLT vs Truth+Reco Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hTruthRecoHLTEtaEfficiency","HLT vs Truth+Reco Efficiency; Truth #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -552,6 +570,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
             addHistogram(new TH1F("hTruthRecoHLTNTrackEfficiency","HLT vs Truth+Reco Efficiency; Number of tracks; Efficiency",10,0,10));
             addHistogram(new TH1F("hTruthRecoHLTNVtxEfficiency","HLT vs Truth+Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
             addHistogram(new TH1F("hTruthRecoHLTMuEfficiency","HLT vs Truth+Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+	    */
             addHistogram(new TH2F("hTruthRecoHLTEtaVsPhiEfficiency","HLT vs Truth+Reco in  Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
             
             addProfile(new TProfile("TProfTruthRecoL1PtEfficiency","L1 vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
@@ -648,7 +667,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         //Reco
         addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/RecoEfficiency",run) );
         setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/RecoEfficiency");        
-        addHistogram(new TH1F("hRecoTauPtDenom",";Reco p_{T} [GeV];",nbin_pt-1,bins_pt));
+	/*        addHistogram(new TH1F("hRecoTauPtDenom",";Reco p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoTauPt1PDenom",";Reco 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoTauPt3PDenom",";Reco 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoTauEtaDenom","; #eta;",nbin_eta-1,bins_eta));
@@ -656,9 +675,11 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addHistogram(new TH1F("hRecoTauNTrackDenom","; Number of tracks;",10,0,10));
         addHistogram(new TH1F("hRecoTauNVtxDenom","; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
         addHistogram(new TH1F("hRecoTauMuDenom","; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	*/
         addHistogram(new TH2F("hRecoTauEtaVsPhiDenom","; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
         
-        addHistogram(new TH1F("hRecoL1PtNum","L1 vs Reco; Reco p_{T} [GeV];",nbin_pt-1,bins_pt));
+	/*
+	  addHistogram(new TH1F("hRecoL1PtNum","L1 vs Reco; Reco p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoL1Pt1PNum","L1 vs Reco; Reco 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoL1Pt3PNum","L1 vs Reco; Reco 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoL1EtaNum","L1 vs Reco; #eta;",nbin_eta-1,bins_eta));
@@ -666,8 +687,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addHistogram(new TH1F("hRecoL1NTrackNum","L1 vs Reco Number of tracks;",10,0,10));
         addHistogram(new TH1F("hRecoL1NVtxNum","L1 vs Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
         addHistogram(new TH1F("hRecoL1MuNum","L1 vs Reco; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	*/
         addHistogram(new TH2F("hRecoL1EtaVsPhiNum","L1 vs Reco; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-        
+        /*
         addHistogram(new TH1F("hRecoHLTPtNum","HLT vs Reco; Reco p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoHLTPt1PNum","HLT vs Reco; Reco 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoHLTPt3PNum","HLT vs Reco; Reco 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
@@ -676,8 +698,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addHistogram(new TH1F("hRecoHLTNTrackNum","HLT vs Reco; Number of tracks;",10,0,10));
         addHistogram(new TH1F("hRecoHLTNVtxNum","HLT vs Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
         addHistogram(new TH1F("hRecoHLTMuNum","HLT vs Reco; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+	*/
         addHistogram(new TH2F("hRecoHLTEtaVsPhiNum","HLT vs Reco; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
         
+	/*
         addHistogram(new TH1F("hRecoL1PtEfficiency","L1 vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoL1Pt1PEfficiency","L1 vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoL1Pt3PEfficiency","L1 vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
@@ -686,8 +710,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addHistogram(new TH1F("hRecoL1NTrackEfficiency","L1 vs Reco Efficiency; Number of tracks; Efficiency",10,0,10));
         addHistogram(new TH1F("hRecoL1NVtxEfficiency","L1 vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
         addHistogram(new TH1F("hRecoL1MuEfficiency","L1 vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+	*/
         addHistogram(new TH2F("hRecoL1EtaVsPhiEfficiency","L1 vs Reco in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-        
+        /*
         addHistogram(new TH1F("hRecoHLTPtEfficiency","HLT vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoHLTPt1PEfficiency","HLT vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addHistogram(new TH1F("hRecoHLTPt3PEfficiency","HLT vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
@@ -696,9 +721,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addHistogram(new TH1F("hRecoHLTNTrackEfficiency","HLT vs Reco Efficiency; Number of tracks; Efficiency",10,0,10));
         addHistogram(new TH1F("hRecoHLTNVtxEfficiency","HLT vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
         addHistogram(new TH1F("hRecoHLTMuEfficiency","HLT vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+	*/
         addHistogram(new TH2F("hRecoHLTEtaVsPhiEfficiency","HLT vs Reco in  Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-        
-        addProfile(new TProfile("TProfRecoL1PtEfficiency", "L1 Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+       
+         addProfile(new TProfile("TProfRecoL1PtEfficiency", "L1 Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addProfile(new TProfile("TProfRecoL1Pt1PEfficiency", "L1 Vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addProfile(new TProfile("TProfRecoL1Pt3PEfficiency", "L1 Vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addProfile(new TProfile("TProfRecoL1EtaEfficiency", "L1 Vs Reco Efficiency; Reco #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -707,7 +733,17 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addProfile(new TProfile("TProfRecoL1NVtxEfficiency", "L1 Vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
         addProfile(new TProfile("TProfRecoL1MuEfficiency", "L1 Vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
         
+
+
+	double hbins_pt[nbin_pt] = {10.,25.,35.,65.,70.,100.,200., 250., 300., 350.,  400., 500., 600.};
+        addProfile(new TProfile("TProfRecoL1HighPtEfficiency", "L1 Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
+        addProfile(new TProfile("TProfRecoL1HighPt1PEfficiency", "L1 Vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
+        addProfile(new TProfile("TProfRecoL1HighPt3PEfficiency", "L1 Vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
+
         addProfile(new TProfile("TProfRecoHLTPtEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+	addProfile(new TProfile("TProfRecoHLTHighPtEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
+	addProfile(new TProfile("TProfRecoHLTHighPt1pEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
+	addProfile(new TProfile("TProfRecoHLTHighPt3pEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
         addProfile(new TProfile("TProfRecoHLTPt1PEfficiency", "HLT Vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addProfile(new TProfile("TProfRecoHLTPt3PEfficiency", "HLT Vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
         addProfile(new TProfile("TProfRecoHLTEtaEfficiency", "HLT Vs Reco Efficiency; Reco #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -716,9 +752,62 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){
         addProfile(new TProfile("TProfRecoHLTNVtxEfficiency", "HLT Vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
         addProfile(new TProfile("TProfRecoHLTMuEfficiency", "HLT Vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
         
-        //Reco
         
     }
+
+	if(m_doTrackCurves)
+      {		
+	addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/trackCurves", run));
+	setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/trackCurves"); 
+	addHistogram(new TH2I("hreco_vs_pres_coreTracks","Reco vs preselection tau multiplicity;Number of core tracks of reco tau; Number of core tracks of preselection tau",10,0,10,10,0,10));
+    	addHistogram(new TH2I("hreco_vs_pres_isoTracks","Reco vs preselection tau multiplicity;Number of isolation tracks of reco tau; Number of isolation tracks of preselection tau",10,0,10,10,0,10));
+	addHistogram(new TH1F("hpstau_trk_pt","Preselection tau matched to reco+truth; track p_{T} [GeV]; Nevents",20,0.,100.));
+    	addHistogram(new TH1F("hpstau_trk_eta","Preselection tau matched to reco+truth; track #eta; Nevents",26,-2.6,2.6));
+   	addHistogram(new TH1F("hpstau_trk_phi","Preselection tau matched to reco+truth; track #phi; Nevents",32,-3.2,3.2));
+   	addHistogram(new TH1F("hpstau_trk_d0","Preselection tau matched to reco+truth; track d0[mm]",20,-5.,5.));
+   	addHistogram(new TH1F("hpstau_trk_z0","Preselection tau matched to reco+truth; track z0[mm]",15,-200.,200.));
+   	addHistogram(new TH2F("hpstau_trk_etaphi","Preselection tau matched to reco+truth; #eta ; #phi",26,-2.6,2.6,32,-3.2,3.2));
+
+	addHistogram(new TH1F("hrecotau_trk_pt","Reco tau matched to truth; reco track p_{T} [GeV]; Nevents",20,0.,100.));
+    	addHistogram(new TH1F("hrecotau_trk_eta","Reco tau matched to truth; reco track #eta; Nevents",26,-2.6,2.6));
+   	addHistogram(new TH1F("hrecotau_trk_phi","Reco tau matched to truth; reco track #phi; Nevents",32,-3.2,3.2));
+   	addHistogram(new TH1F("hrecotau_trk_d0","Reco tau matched to truth; reco track d0[mm]",20,-5.,5.));
+   	addHistogram(new TH1F("hrecotau_trk_z0","Reco tau matched to truth; reco track z0[mm]",15,-200.,200.));
+   	addHistogram(new TH2F("hrecotau_trk_etaphi","Reco tau matched to truth; #eta ; #phi",26,-2.6,2.6,32,-3.2,3.2));
+
+	addHistogram(new TH1F("hrecotauNum_trk_pt","Reco+Truth tau matched to preselection; p_{T} [GeV]; Nevents",20,0.,100.));
+    	addHistogram(new TH1F("hrecotauNum_trk_eta","Reco+Truth tau matched to preselection; #eta; Nevents",26,-2.6,2.6));
+   	addHistogram(new TH1F("hrecotauNum_trk_phi","Reco+Truth tau matched to preselection; #phi; Nevents",32,-3.2,3.2));
+   	addHistogram(new TH1F("hrecotauNum_trk_d0","Reco+Truth tau matched to preselection; d0[mm]",20,-5.,5.));
+   	addHistogram(new TH1F("hrecotauNum_trk_z0","Reco+Truth tau matched to preselection; z0[mm]",15,-200.,200.));
+   	addHistogram(new TH2F("hrecotauNum_trk_etaphi","Reco+Truth tau matched to preselection; #eta ; #phi",26,-2.6,2.6,32,-3.2,3.2));
+	
+	addHistogram(new TH1F("hpstau_trkres_pt","Preselection track Resolution wrt reco;track pt resolution;Nevents",40,-0.4,0.4));
+        addHistogram(new TH1F("hpstau_trkres_eta","Preselection track Resolution wrt reco;track #eta resolution;Nevents",40,-0.4,0.4));
+        addHistogram(new TH1F("hpstau_trkres_phi","Preselection track Resolution wrt reco;track #phi resolution;Nevents",40,-0.4,0.4));
+        addHistogram(new TH1F("hpstau_trkres_d0","Preselection track Resolution wrt reco;track d0 resolution;Nevents",40,-0.4,0.4));
+        addHistogram(new TH1F("hpstau_trkres_z0","Preselection track Resolution wrt reco;track z0 resolution;Nevents",40,-0.4,0.4));  
+
+	addHistogram(new TH2F("hpstautrk_vs_recotrk_pt","Preselection Vs Reco tracks; Preselection track p_{T} [GeV]; Reco track p_{T}",20,0.,100.,20,0.,100.));
+    	addHistogram(new TH2F("hpstautrk_vs_recotrk_eta","Preselection Vs Reco tracks; Preselection track  #eta; Reco track #eta",26,-2.6,2.6,26,-2.6,2.6));
+   	addHistogram(new TH2F("hpstautrk_vs_recotrk_phi","Preselection Vs Reco tracks; Preselection track  #phi; Reco track #phi",32,-3.2,3.2,26,-2.6,2.6));
+   	addHistogram(new TH2F("hpstautrk_vs_recotrk_d0","Preselection Vs Reco tracks; Preselection track d0[mm]; Reco track",20,-5.,5.,20,-5.,5.));
+   	addHistogram(new TH2F("hpstautrk_vs_recotrk_z0","Preselection Vs Reco tracks; Preselection track z0[mm]; Reco track",15,-200.,200.,15,-200.,200.));
+
+	addHistogram(new TH1F("hpstau_trkeff_pt","Preselection Vs Reco Track Efficiency; Reco track p_{T} [GeV]; Efficiency",20,0.,100.));
+    	addHistogram(new TH1F("hpstau_trkeff_eta","Preselection Vs Reco Track Efficiency; Reco track #eta; Efficiency",26,-2.6,2.6));
+   	addHistogram(new TH1F("hpstau_trkeff_phi","Preselection Vs Reco Track Efficiency; Reco track #phi; Efficiency",32,-3.2,3.2));
+   	addHistogram(new TH1F("hpstau_trkeff_d0","Preselection Vs Reco Track Efficiency; Reco track d0[mm]; Efficiency",20,-5.,5.));
+   	addHistogram(new TH1F("hpstau_trkeff_z0","Preselection Vs Reco Track Efficiency; Reco track z0[mm]; Efficiency",15,-200.,200.));
+
+   	addProfile(new TProfile("TProfPresVsRecoPtEfficiency","Preselection Vs Reco Track Efficiency; Reco track p_{T} [GeV]; Efficiency",20,0.,100.));
+	addProfile(new TProfile("TProfPresVsRecoEtaEfficiency","Preselection Vs Reco Track Efficiency; Reco track #eta; Efficiency",26,-2.6,2.6));
+	addProfile(new TProfile("TProfPresVsRecoPhiEfficiency","Preselection Vs Reco Track Efficiency; Reco track #phi; Efficiency",32,-3.2,3.2));
+	addProfile(new TProfile("TProfPresVsRecod0Efficiency","Preselection Vs Reco Track Efficiency; Reco track d0[mm]; Efficiency",20,-5.,5.));
+	addProfile(new TProfile("TProfPresVsRecoz0Efficiency","Preselection Vs Reco Track Efficiency; Reco track z0[mm]; Efficiency",15,-200.,200.));
+      }
+
+	
     
 }
 
@@ -726,100 +815,11 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     
     if(m_RealZtautauEff)
     {
-        const int nbin_pt = 13;
-        double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.,200.};
-        const int nbin_eta = 9;
-        double bins_eta[nbin_eta] = {-2.47,-1.52,-1.37,-0.69,0.,0.69,1.37,1.52,2.47};
-        
-        addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/RealZtautauEff",run) );
-        setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff");        
-        addHistogram(new TH1F("hRealBSTauPt",";Before selection Offline #tau p_{T} [GeV];",100,0,200));
-        addHistogram(new TH1F("hRealBSTauEta",";Before selection Offline #tau #eta;",12,-2.5,2.5));
-        addHistogram(new TH1F("hRealBSTauPhi",";Before selection Offline #tau #phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealBSTauNTrack",";Before selection Number of #tau tracks;",10,0,10));
-        addHistogram(new TH1F("hRealCandTau",";Before selection Total Number of Offline #taus;",10,0,10));
-        addHistogram(new TH1F("hRealASTauPt",";After selection Offline #tau p_{T} [GeV];",100,0,200));
-        addHistogram(new TH1F("hRealASTauEta"," ;After selection Offline #tau #eta;",12,-2.5,2.5));
-        addHistogram(new TH1F("hRealASTauPhi",";After selection Offline #tau #phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealASTauNTrack",";After selection Number of #tau tracks;",10,0,10));
-        addHistogram(new TH1F("hRealSelectedTau",";After selection Number of Offline #taus;",10,0,10));
-        
-        addHistogram(new TH1F("hRealTauMu",";Number of Selected taus for selected muon;",10,0,10));
-        addHistogram(new TH1F("hRealMuTau",";Number of Selected muons for selected tau;",10,0,10));
-        
-        addHistogram(new TH1F("hRealBSMuPt",";Before selection Offline #mu p_{T} [GeV];",100,0,200));
-        addHistogram(new TH1F("hRealBSMuEta",";Before selection Offline #mu #eta;",12,-2.5,2.5));
-        addHistogram(new TH1F("hRealBSMuPhi",";Before selection Offline #mu #phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealCandMu",";Before selection Total Number of Offline #mu;",10,0,10));
-        addHistogram(new TH1F("hRealASMuPt",";After selection Offline #mu p_{T} [GeV];",100,0,200));
-        addHistogram(new TH1F("hRealASMuEta",";After selection Offline #mu #eta;",12,-2.5,2.5));
-        addHistogram(new TH1F("hRealASMuPhi",";After selection Offline #mu #phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealSelectedMu",";After selection Number of Offline #mu;",10,0,10));
-        
-        //MET
-        addHistogram(new TH1F("hRealMET",";E^{Miss}_{T} [GeV];",50,0,120));
-        
-        //tau >=1, mu == 1 Vars
-        addHistogram(new TH1F("hRealTauPt",";Offline #tau p_{T} [GeV];",nbin_pt-1,bins_pt));
-        addHistogram(new TH1F("hRealTauEta",";Offline #tau #eta;",nbin_eta-1,bins_eta));
-        addHistogram(new TH1F("hRealTauPhi",";Offline #tau #phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealTauNTrack",";Number of #tau tracks;",10,0,10));
-        addHistogram(new TH1F("hRealTauCharge",";Offline #tau Charge;",11,-5.5,5.5));
-        addHistogram(new TH1F("hRealMuPt",";Offline #mu p_{T} [GeV];",nbin_pt-1,bins_pt));
-        addHistogram(new TH1F("hRealMuEta",";Offline #mu #eta;",nbin_eta-1,bins_eta));
-        addHistogram(new TH1F("hRealMuPhi",";Offline #mu #phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealMuCharge",";Offline #mu Charge;",11,-5.5,5.5));
-        addHistogram(new TH1F("hRealTauMuCosdPhi",";Cos#Delta#phi;",16,-2,2));
-        addHistogram(new TH1F("hRealMETMuTransMass",";m_{T}(#mu, E^{miss}_{T}) [GeV];",100,0,140));
-        addHistogram(new TH1F("hRealTauMuVisMass",";m_{vis}(#mu, #tau_{h}) [GeV];",100,0,140));
-        addHistogram(new TH1F("hRealTauMuDPhi",";#mu #tau #Delta#phi;",16,-3.2,3.2));
-        addHistogram(new TH1F("hRealTauMuCharge",";Offline #tau+#mu Charge;",11,-5.5,5.5));
-        
-        CutItems.clear();
-        TauCutFlow.clear();
-        MuCutFlow.clear();
-        
-        TauCutFlow.push_back("No Cut");
-        TauCutFlow.push_back("Tau Pt");
-        TauCutFlow.push_back("Tau Eta");
-        TauCutFlow.push_back("Tau Ntrack");
-        TauCutFlow.push_back("Tau Charge");
-        TauCutFlow.push_back("Tau JetBDTSigMedium");
-        
-        MuCutFlow.push_back("No Cut");
-        MuCutFlow.push_back("Mu Pt");
-        MuCutFlow.push_back("Mu Eta");
-        MuCutFlow.push_back("Author MuIdCo");
-        MuCutFlow.push_back("Quality cuts on CB #mu tracks");
-        MuCutFlow.push_back("EtCone20Rel");
-        MuCutFlow.push_back("PtCone20Rel");
-        
-        CutItems.push_back("No Cut");
-        CutItems.push_back("Selected Tau");
-        CutItems.push_back("Selected Mu");
-        CutItems.push_back("Selected #tau+#mu");
-        CutItems.push_back("#tau+#mu Charge");
-        CutItems.push_back("#tau+#mu Vis Mass");
-        CutItems.push_back("#tau #mu #Delta#phi");
-        
-        addHistogram(new TH1F("hCutFlow","; ;Events",CutItems.size(),0,CutItems.size()));
-        addHistogram(new TH1F("hTauCutFlow","; ;Events",TauCutFlow.size(),0,TauCutFlow.size()));
-        addHistogram(new TH1F("hMuCutFlow","; ;Events",MuCutFlow.size(),0,MuCutFlow.size()));
-        
-        for(unsigned int i=0;i<CutItems.size(); ++i)
-        {
-            hist("hCutFlow")->GetXaxis()->SetBinLabel(i+1,CutItems.at(i).c_str());
-        }
-        for(unsigned int i=0;i<TauCutFlow.size(); ++i)
-        {
-            hist("hTauCutFlow")->GetXaxis()->SetBinLabel(i+1,TauCutFlow.at(i).c_str());
-        }
-        for(unsigned int i=0;i<MuCutFlow.size(); ++i)
-        {
-            hist("hMuCutFlow")->GetXaxis()->SetBinLabel(i+1,MuCutFlow.at(i).c_str());
-        }
+        const int nbin_pt = 11;
+	double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.};
         
-        for(unsigned int i=0;i<m_trigItems.size();++i){
+	for(unsigned int i=0;i<m_trigItems.size();++i)
+	  {
             addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i],run) );
             setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]);
             addHistogram(new TH1F("hRealZttPtDenom","Offline Real Tau;Offline Tau p_{T} [GeV];",nbin_pt-1,bins_pt));
@@ -827,7 +827,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){
             addHistogram(new TH1F("hRealZttHLTPtNum","HLT vs Offline Real Tau; Offline Tau p_{T} [GeV];",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hRealZttL1PtEfficiency","L1 vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
             addHistogram(new TH1F("hRealZttHLTPtEfficiency","HLT vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
-        }
+	    addProfile(new TProfile("TProfRealZttL1PtEfficiency", "L1 Vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+            addProfile(new TProfile("TProfRealZttHLTPtEfficiency", "HLT Vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+	  }
     }
     
     addMonGroup(new MonGroup(this,"HLT/TauMon/Expert",run));
@@ -845,15 +847,30 @@ void HLTTauMonTool::bookHistogramsAllItem(){
         hist("hHLTCountsDebug")->GetXaxis()->SetBinLabel(i+1,m_trigItems.at(i).c_str());
     }
     
-    if(m_doTestTracking){
+    /*if(m_doTestTracking){
         addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/FTF_track_comparison",run));
         setCurrentMonGroup("HLT/TauMon/Expert/FTF_track_comparison");
         addHistogram(new TH1F("hFTFnTrack_1step","FTF number of tracks;number of tracks;Nevents",10,0,10));
         addHistogram(new TH1F("hFTFnTrack_2steps","FTF number of tracks;number of tracks;Nevents",10,0,10));
         addHistogram(new TH1F("hFTFnWideTrack_1step","FTF number of tracks;number of tracks;Nevents",10,0,10));
         addHistogram(new TH1F("hFTFnWideTrack_2steps","FTF number of tracks;number of tracks;Nevents",10,0,10));
-    }
-    
+    }*/
+    if(m_dijetFakeTausEff)
+      {
+        const int nbin_pt = 17;
+        double bins_pt[nbin_pt] = {380, 385, 390, 395, 400, 405, 410, 415, 420, 430, 440, 450, 460, 470, 480, 490, 500};
+       
+	for(unsigned int i=0;i<m_trigItemsHighPt.size();++i){
+          addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i],run) );
+	  setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]);
+          addHistogram(new TH1F("hdijetFakeTausPtDenom","Offline Fake Tau;Offline Fake Tau p_{T} [GeV];",nbin_pt-1,bins_pt));
+          addHistogram(new TH1F("hdijetFakeTausL1PtNum","L1 vs Offline Fake Tau; Offline Fake Tau p_{T} [GeV];",nbin_pt-1,bins_pt));
+          addHistogram(new TH1F("hdijetFakeTausHLTPtNum","HLT vs Offline Fake Tau; Offline Fake Tau p_{T} [GeV];",nbin_pt-1,bins_pt));
+          addHistogram(new TH1F("hdijetFakeTausL1PtEfficiency","L1 vs Offline Fake Tau Efficiency; Offline Fake Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+          addHistogram(new TH1F("hdijetFakeTausHLTPtEfficiency","HLT vs Offline Fake Tau Efficiency; Offline Fake Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+	}
+      }
+
     std::vector<string> lowest_names;
     lowest_names.push_back("lowest_singletau");
     //    lowest_names.push_back("lowest_ditau");
@@ -865,6 +882,7 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     for(unsigned int i=0;i<lowest_names.size();++i){
         
         addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/L1RoI",run));
+        addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/Emulation",run));
         addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/L1VsOffline",run));
         addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionTau",run));
         addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionVsOffline",run));
@@ -890,47 +908,85 @@ void HLTTauMonTool::bookHistogramsAllItem(){
 	for(unsigned int i=0;i<m_topo_chains.size(); ++i){    
             addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/TopoValidation/"+m_topo_chains.at(i),run));
             setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation/"+m_topo_chains.at(i));
-	    addHistogram(new TH1F("hDR","dR between all RoIs;  DR;",32,0.,3.2));
-	    addHistogram(new TH1F("hDRjets","dR between jet and other RoIs;  DR;",32,0.,3.2));
-	    addHistogram(new TH1F("hDRnoJets","dR between non-jet RoIs;  DR;",32,0.,3.2));
-	    addHistogram(new TH1F("hDR_noTopo","dR between all RoIs;  DR;",32,0.,3.2));
+            addHistogram(new TH1F("hDR","dR between all RoIs;  DR;",32,0.,3.2));
+            addHistogram(new TH1F("hDRjets","dR between jet and other RoIs;  DR;",32,0.,3.2));
+            addHistogram(new TH1F("hDRnoJets","dR between non-jet RoIs;  DR;",32,0.,3.2));
+            addHistogram(new TH1F("hDR_noTopo","dR between all RoIs;  DR;",32,0.,3.2));
             addHistogram(new TH1F("hDRjets_noTopo","dR between jet and other RoIs;  DR;",32,0.,3.2));
-            addHistogram(new TH1F("hDRnoJets_noTopo","dR between non-jet RoIs;  DR;",32,0.,3.2)); 
+            addHistogram(new TH1F("hDRnoJets_noTopo","dR between non-jet RoIs;  DR;",32,0.,3.2));
+
+            addHistogram(new TH1F("hDRBothtaus","dR when both RoIs are taus;  DR;",35,0.,3.5));
+            addHistogram(new TH1F("hPTLeading","PT Leading Tau",50,0.,50.));
+            addHistogram(new TH1F("hPTSubLeading","PT SubLeading Tau",50,0.,50.));
+            addHistogram(new TH1F("hEtaLeading","Eta Leading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hEtaSubLeading","Eta SubLeading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hPhiLeading","Eta SubLeading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hPhiSubLeading","Phi SubLeading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hMultiTaus","Multiplicity Taus above 12 GeV",20,0.,20));
+            addHistogram(new TH1F("hMultiJets","Multiplicity Jets above 25 GeV",100,0.,100));
+            addHistogram(new TH1F("hPTLeadingJet","PT Leading Tau",50,0.,50.));
+            addHistogram(new TH1F("hPTSubLeadingJet","PT SubLeading Tau",50,0.,50.));
+            addHistogram(new TH1F("hEtaLeadingJet","Eta Leading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hEtaSubLeadingJet","Eta SubLeading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hPhiLeadingJet","Eta SubLeading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hPhiSubLeadingJet","Phi SubLeading Tau",70,-3.5,3.5));
+            addHistogram(new TH1F("hMultiTausJet","Multiplicity Taus above 12 GeV",20,0.,20));
+            addHistogram(new TH1F("hMultiJetsJet","Multiplicity Jets above 25 GeV",100,0.,100));
+
+            addHistogram(new TH1F("hDRBothtausJet","dR when both RoIs are taus;  DR;",35,0.,3.5));
+            addHistogram(new TH1F("hDRBothtausJetN","dR when both RoIs are taus;  DR;",35,0.,3.5));
+
+            addHistogram(new TH1F("hDisambiguation","Flag Disambiguation",6,0.,6.));
+
+            addHistogram(new TH1F("hDRBothtaus_noTopo","dR when both RoIs are taus;  DR;",35,0.,3.5));
+            addHistogram(new TH1F("hDRBothtausJet_noTopo","dR when both RoIs are taus;  DR;",35,0.,3.5));
+            addHistogram(new TH1F("hDRBothtausJetN_noTopo","dR when both RoIs are taus;  DR;",35,0.,3.5));
 	}
     }
     
     if(m_emulation){
         addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/Emulation",run));
         setCurrentMonGroup("HLT/TauMon/Expert/Emulation");
-        addHistogram(new TH1F("hL1EmulationPassTDT","; TDT passed events;",m_emulation_l1_tau.size(),-0.5,m_emulation_l1_tau.size()-0.5));
-        addHistogram(new TH1F("hHLTEmulationPassTDT"," TDT passed events;",m_emulation_hlt_tau.size(),-0.5,m_emulation_hlt_tau.size()-0.5));
-        addHistogram(new TH1F("hL1EmulationPassEmul"," Emualtion passed events;",m_emulation_l1_tau.size(),-0.5,m_emulation_l1_tau.size()-0.5));
-        addHistogram(new TH1F("hHLTEmulationPassEmul"," Emulation passed events;",m_emulation_hlt_tau.size(),-0.5,m_emulation_hlt_tau.size()-0.5));
-        addHistogram(new TH1F("hL1Emulation"," Mismatched events;",m_emulation_l1_tau.size(),-0.5,m_emulation_l1_tau.size()-0.5));
-        addHistogram(new TH1F("hHLTEmulation"," Mismatched events;",m_emulation_hlt_tau.size(),-0.5,m_emulation_hlt_tau.size()-0.5));
-        for(unsigned int i=0;i<m_emulation_l1_tau.size(); ++i){
-            hist("hL1Emulation")->GetXaxis()->SetBinLabel(i+1,m_emulation_l1_tau.at(i).c_str());
-            hist("hL1EmulationPassTDT")->GetXaxis()->SetBinLabel(i+1,m_emulation_l1_tau.at(i).c_str());
-            hist("hL1EmulationPassEmul")->GetXaxis()->SetBinLabel(i+1,m_emulation_l1_tau.at(i).c_str());
+        if(m_emulation_l1_tau.size() > 0) {
+            addHistogram(new TH1F("hL1EmulationPassTDT", " TDT L1 passed events;", m_emulation_l1_tau.size(), -0.5, m_emulation_l1_tau.size()-0.5));
+            addHistogram(new TH1F("hL1EmulationPassEmul", " Emulation L1 passed events;", m_emulation_l1_tau.size(), -0.5, m_emulation_l1_tau.size()-0.5));
+            addHistogram(new TH1F("hL1Emulation", " L1 Emulation-TDT Mismatched events;", m_emulation_l1_tau.size(), -0.5, m_emulation_l1_tau.size()-0.5));
         }
-        for(unsigned int i=0;i<m_emulation_hlt_tau.size(); ++i){
-            hist("hHLTEmulation")->GetXaxis()->SetBinLabel(i+1,m_emulation_hlt_tau.at(i).c_str());
-            hist("hHLTEmulationPassTDT")->GetXaxis()->SetBinLabel(i+1,m_emulation_hlt_tau.at(i).c_str());
-            hist("hHLTEmulationPassEmul")->GetXaxis()->SetBinLabel(i+1,m_emulation_hlt_tau.at(i).c_str());
+
+        if(m_emulation_hlt_tau.size() > 0) {
+            addHistogram(new TH1F("hHLTEmulationPassTDT", " TDT HLT passed events;", m_emulation_hlt_tau.size(), -0.5, m_emulation_hlt_tau.size()-0.5));
+            addHistogram(new TH1F("hHLTEmulationPassEmul", " Emulation HLT passed events;", m_emulation_hlt_tau.size(), -0.5, m_emulation_hlt_tau.size()-0.5));
+            addHistogram(new TH1F("hHLTEmulation", " HLT Emulation-TDT Mismatched events;", m_emulation_hlt_tau.size(), -0.5, m_emulation_hlt_tau.size()-0.5));
+        }
+
+        for(unsigned int i=0; i < m_emulation_l1_tau.size(); ++i){
+            hist("hL1Emulation")->GetXaxis()->SetBinLabel(i+1, m_emulation_l1_tau.at(i).c_str());
+            hist("hL1EmulationPassTDT")->GetXaxis()->SetBinLabel(i+1, m_emulation_l1_tau.at(i).c_str());
+            hist("hL1EmulationPassEmul")->GetXaxis()->SetBinLabel(i+1, m_emulation_l1_tau.at(i).c_str());
+        }
+        
+        for(unsigned int i=0; i < m_emulation_hlt_tau.size(); ++i){
+            hist("hHLTEmulation")->GetXaxis()->SetBinLabel(i+1, m_emulation_hlt_tau.at(i).c_str());
+            hist("hHLTEmulationPassTDT")->GetXaxis()->SetBinLabel(i+1, m_emulation_hlt_tau.at(i).c_str());
+            hist("hHLTEmulationPassEmul")->GetXaxis()->SetBinLabel(i+1, m_emulation_hlt_tau.at(i).c_str());
         }
     }
     const int nbin_pt = 13;
     double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.,200.};
+    double hbins_pt[nbin_pt] = {10.,25.,35.,65.,70.,100.,200., 250., 300., 350.,  400., 500., 600.};
     const int nbin_eta = 9;
     double bins_eta[nbin_eta] = {-2.47,-1.52,-1.37,-0.69,0.,0.69,1.37,1.52,2.47};
     const int nbin_nvtx = 6;
     double bins_nvtx[nbin_nvtx] = {0.,5.,10.,15.,20.,25.};
-    const int nbin_mu = 21;
-    float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40.};
+    const int nbin_mu = 33;
+    float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40., 42., 44., 44., 46., 48., 50., 52., 54., 56., 58., 60., 62};
+    //    const int nbin_mu = 21;
+    //    float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40.};
 
     addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/HLTefficiency",run));
     setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency");
     addProfile(new TProfile("TProfRecoHLT25PtEfficiency", "idperf_tracktwo Vs perf_tracktwo;  p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+    addProfile(new TProfile("TProfRecoHLT160PtEfficiency", "idperf_tracktwo Vs perf_tracktwo;  p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
     addProfile(new TProfile("TProfRecoHLT25Pt1PEfficiency", "idperf_tracktwo Vs perf_tracktwo;  1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addProfile(new TProfile("TProfRecoHLT25Pt3PEfficiency", "idperf_tracktwo Vs perf_tracktwo; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addProfile(new TProfile("TProfRecoHLT25EtaEfficiency", "idperf_tracktwo Vs perf_tracktwo;  #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -940,6 +996,7 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addProfile(new TProfile("TProfRecoHLT25MuEfficiency", "idperf_tracktwo Vs perf_tracktwo; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
     
     addProfile(new TProfile("TProfRecoHLT25PtEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+    addProfile(new TProfile("TProfRecoHLT160PtEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt));
     addProfile(new TProfile("TProfRecoHLT25Pt1PEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addProfile(new TProfile("TProfRecoHLT25Pt3PEfficiency_2", "perf_tracktwo Vs medium1_tracktwo;  3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addProfile(new TProfile("TProfRecoHLT25EtaEfficiency_2", "perf_tracktwo Vs medium1_tracktwo;  #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -947,9 +1004,11 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addProfile(new TProfile("TProfRecoHLT25NTrackEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; Number of tracks; Efficiency",10,0,10));
     addProfile(new TProfile("TProfRecoHLT25NVtxEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
     addProfile(new TProfile("TProfRecoHLT25MuEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
-    
-    
-    addHistogram(new TH1F("hRecoHLT25PtNum","idperf_tracktwo Vs perf_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt));
+
+
+    addProfile(new TProfile("TProfRecoL1_J25PtEfficiency", "TAU20IM_2TAU12IM_3J25_2J20_3J12 vs TAU20IM_2TAU12IM ; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));    
+
+/*    addHistogram(new TH1F("hRecoHLT25PtNum","idperf_tracktwo Vs perf_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt1PNum","idperf_tracktwo Vs perf_tracktwo;  1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt3PNum","idperf_tracktwo Vs perf_tracktwo;  3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25EtaNum","idperf_tracktwo Vs perf_tracktwo; #eta;",nbin_eta-1,bins_eta));
@@ -957,8 +1016,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addHistogram(new TH1F("hRecoHLT25NTrackNum","idperf_tracktwo Vs perf_tracktwo; Number of tracks;",10,0,10));
     addHistogram(new TH1F("hRecoHLT25NVtxNum","idperf_tracktwo Vs perf_tracktwo; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
     addHistogram(new TH1F("hRecoHLT25MuNum","idperf_tracktwo Vs perf_tracktwo; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+*/
     addHistogram(new TH2F("hRecoHLT25EtaVsPhiNum","idperf_tracktwo Vs perf_tracktwo; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-    addHistogram(new TH1F("hRecoTau25PtDenom","; p_{T} [GeV];",nbin_pt-1,bins_pt));
+/*    addHistogram(new TH1F("hRecoTau25PtDenom","; p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoTau25Pt1PDenom","; 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoTau25Pt3PDenom","; 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoTau25EtaDenom","; #eta;",nbin_eta-1,bins_eta));
@@ -966,8 +1026,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addHistogram(new TH1F("hRecoTau25NTrackDenom","; Number of tracks;",10,0,10));
     addHistogram(new TH1F("hRecoTau25NVtxDenom","; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
     addHistogram(new TH1F("hRecoTau25MuDenom","; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+*/
     addHistogram(new TH2F("hRecoTau25EtaVsPhiDenom","; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-    addHistogram(new TH1F("hRecoHLT25PtEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency;  p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+/*    addHistogram(new TH1F("hRecoHLT25PtEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency;  p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt1PEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt3PEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25EtaEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency;  #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -975,12 +1036,11 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addHistogram(new TH1F("hRecoHLT25NTrackEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; Number of tracks; Efficiency",10,0,10));
     addHistogram(new TH1F("hRecoHLT25NVtxEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
     addHistogram(new TH1F("hRecoHLT25MuEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+*/
     addHistogram(new TH2F("hRecoHLT25EtaVsPhiEfficiency","idperf_tracktwo Vs perf_tracktwo in  Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
 
 
-
-
-    addHistogram(new TH1F("hRecoHLT25PtNum_2","perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt));
+/*    addHistogram(new TH1F("hRecoHLT25PtNum_2","perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt1PNum_2","perf_tracktwo Vs medium1_tracktwo;  1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt3PNum_2","perf_tracktwo Vs medium1_tracktwo;  3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25EtaNum_2","perf_tracktwo Vs medium1_tracktwo; #eta;",nbin_eta-1,bins_eta));
@@ -988,8 +1048,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addHistogram(new TH1F("hRecoHLT25NTrackNum_2","perf_tracktwo Vs medium1_tracktwo; Number of tracks;",10,0,10));
     addHistogram(new TH1F("hRecoHLT25NVtxNum_2","perf_tracktwo Vs medium1_tracktwo; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
     addHistogram(new TH1F("hRecoHLT25MuNum_2","perf_tracktwo Vs medium1_tracktwo; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+*/
     addHistogram(new TH2F("hRecoHLT25EtaVsPhiNum_2","perf_tracktwo Vs medium1_tracktwo; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-    addHistogram(new TH1F("hRecoTau25PtDenom_2","; p_{T} [GeV];",nbin_pt-1,bins_pt));
+/*    addHistogram(new TH1F("hRecoTau25PtDenom_2","; p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoTau25Pt1PDenom_2","; 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoTau25Pt3PDenom_2","; 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoTau25EtaDenom_2","; #eta;",nbin_eta-1,bins_eta));
@@ -997,8 +1058,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addHistogram(new TH1F("hRecoTau25NTrackDenom_2","; Number of tracks;",10,0,10));
     addHistogram(new TH1F("hRecoTau25NVtxDenom_2","; Number of primary vertices;",nbin_nvtx-1,bins_nvtx));
     addHistogram(new TH1F("hRecoTau25MuDenom_2","; Average interactions per bunch crossing;",nbin_mu-1,bins_mu));
+*/
     addHistogram(new TH2F("hRecoTau25EtaVsPhiDenom_2","; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-    addHistogram(new TH1F("hRecoHLT25PtEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency;  p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
+/*    addHistogram(new TH1F("hRecoHLT25PtEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency;  p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt1PEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25Pt3PEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt));
     addHistogram(new TH1F("hRecoHLT25EtaEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency;  #eta; Efficiency",nbin_eta-1,bins_eta));
@@ -1006,6 +1068,6 @@ void HLTTauMonTool::bookHistogramsAllItem(){
     addHistogram(new TH1F("hRecoHLT25NTrackEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; Number of tracks; Efficiency",10,0,10));
     addHistogram(new TH1F("hRecoHLT25NVtxEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx));
     addHistogram(new TH1F("hRecoHLT25MuEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu));
+*/
     addHistogram(new TH2F("hRecoHLT25EtaVsPhiEfficiency_2","perf_tracktwo Vs medium1_tracktwo in  Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2));
-
 }
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_dijet.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_dijet.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..aee822b0a434d8aea576e87f2cd94e3dd2a50e25
--- /dev/null
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_dijet.cxx
@@ -0,0 +1,222 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "GaudiKernel/IJobOptionsSvc.h"
+#include "AthenaMonitoring/AthenaMonManager.h"
+#include "AthenaMonitoring/ManagedMonitorToolTest.h"
+
+#include "AnalysisUtils/AnalysisMisc.h"
+
+#include "GaudiKernel/MsgStream.h"
+#include "GaudiKernel/StatusCode.h"
+#include "GaudiKernel/ITHistSvc.h"
+#include "GaudiKernel/PropertyMgr.h"
+#include "GaudiKernel/IToolSvc.h"
+#include "StoreGate/StoreGateSvc.h"
+#include "EventInfo/TriggerInfo.h"
+#include "TrigSteeringEvent/HLTResult.h"
+#include "EventInfo/EventInfo.h"
+#include <EventInfo/EventID.h>
+#include "xAODEventInfo/EventInfo.h"
+
+#include "TrigDecisionTool/FeatureContainer.h"
+#include "TrigDecisionTool/Feature.h"
+#include "TrigDecisionTool/ChainGroup.h"
+#include "TrigSteeringEvent/TrigOperationalInfo.h"
+#include "TrigSteeringEvent/TrigOperationalInfoCollection.h"
+#include "TrigSteeringEvent/TrigRoiDescriptor.h"
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
+
+#include "TrigSteeringEvent/TrigOperationalInfoCollection.h"
+
+#include "xAODTau/TauJet.h"
+#include "xAODTau/TauJetContainer.h"
+#include "xAODTau/TauJetAuxContainer.h"
+#include "xAODTau/TauDefs.h"
+
+#include "xAODTrigger/EmTauRoI.h"
+#include "xAODTrigger/EmTauRoIContainer.h"
+#include "xAODTrigger/JetRoIContainer.h"
+#include "xAODTrigger/MuonRoIContainer.h"
+#include "xAODTrigger/EnergySumRoI.h"
+
+#include "xAODTruth/TruthParticleContainer.h"
+#include "xAODTruth/TruthParticle.h"
+#include "xAODTruth/TruthVertex.h"
+#include "xAODTruth/TruthVertexContainer.h"
+
+#include "xAODTracking/TrackParticle.h"
+#include "xAODTracking/TrackParticleContainer.h"
+
+#include "xAODMuon/Muon.h"
+#include "xAODMuon/MuonContainer.h"
+
+#include "xAODMissingET/MissingET.h"
+#include "xAODMissingET/MissingETContainer.h"
+
+#include "xAODJet/JetContainer.h"
+#include "xAODJet/JetConstituentVector.h"
+
+#include "VxVertex/VxContainer.h"
+
+#include "TROOT.h"
+#include "TH1I.h"
+#include "TH1F.h"
+#include "TH2I.h"
+#include "TH2F.h"
+#include "TEfficiency.h"
+
+#include <vector>
+#include <iostream>
+#include <fstream>
+//#define _USE_MATH_DEFINES
+#include <math.h>
+
+
+#include "TrigHLTMonitoring/IHLTMonTool.h"
+#include "TrigConfHLTData/HLTChain.h"
+#include "HLTTauMonTool.h"
+
+using namespace std;
+
+//--------------------------------------------------------------------------------------
+StatusCode HLTTauMonTool::dijetFakeTausEfficiency()
+{
+  ATH_MSG_DEBUG("dijet Fake Taus Efficiency");  
+  setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff");
+
+  
+  const xAOD::JetContainer* jet_cont = 0;
+  if(evtStore()->retrieve(jet_cont, "AntiKt4EMTopoJets" ).isFailure())
+    {
+      ATH_MSG_WARNING("Failed to retrieve offline Jet container. Exiting.");
+      return StatusCode::FAILURE;
+    }
+  
+  const xAOD::JetContainer* HLTjet_cont = 0;
+  if(evtStore()->retrieve(HLTjet_cont, "HLT_xAOD__JetContainer_a4tcemsubjesFS" ).isFailure())
+    {
+      ATH_MSG_WARNING("Failed to retrieve HLT Jet container. Exiting.");
+      return StatusCode::FAILURE;
+    }
+
+  const xAOD::TauJetContainer * reco_cont = 0;
+  if( evtStore()->retrieve(reco_cont, "TauJets").isFailure() )
+    {
+      ATH_MSG_WARNING("Failed to retrieve  TauJets container. Exiting.");
+      return StatusCode::FAILURE;
+    }
+
+  
+  double pt_lead = -1;
+  double pt_sub = -1;
+  double pt_cut = 380000.;
+  bool off_match = false;
+  //  bool tau_matching = false;
+  TLorentzVector LeadJetTLV(0.,0.,0.,0.);
+  TLorentzVector SubLeadJetTLV(0.,0.,0.,0.);
+  const std::string theChain = "j360";
+  const std::string theContainer = "a4tcemsubjesFS";
+  bool leadjet = false;
+  bool subleadjet = false;
+
+  if(!getTDT()->isPassed(Form("HLT_%s",theChain.c_str())))
+    {
+      ATH_MSG_WARNING("Failed to pass single jet trigger. Exiting.");
+      return StatusCode::FAILURE;
+    }
+
+  if(getTDT()->isPassed(Form("HLT_%s",theChain.c_str()))){ //events fired by single jet trigger
+    auto cg = getTDT()->getChainGroup(Form("HLT_%s",theChain.c_str())); 
+    auto fc = cg->features();
+    
+    auto JetFeatureContainers = fc.get<xAOD::JetContainer>(theContainer.c_str()); //get features container
+    
+    for(auto jcont : JetFeatureContainers) {
+      for (auto j : *jcont.cptr()) {
+	// selection of leading and sub leading jet                                                                                                
+	double pt_jet = j->pt();
+	double eta_jet = j->eta();
+	double phi_jet = j->phi();
+	
+	if(pt_jet < pt_cut) continue;
+	if(fabs(eta_jet) > 2.5) continue;
+	
+        if (pt_jet > pt_lead)
+          {
+	    pt_sub = pt_lead;
+	    SubLeadJetTLV = LeadJetTLV;
+            pt_lead = pt_jet;
+            LeadJetTLV.SetPtEtaPhiE(pt_lead,eta_jet,phi_jet,j->e());
+	    leadjet = true;
+	    
+          }
+        if(pt_jet < pt_lead && pt_jet > pt_sub)
+          {
+            pt_sub = pt_jet;
+            SubLeadJetTLV.SetPtEtaPhiE(pt_sub,eta_jet,phi_jet,j->e());
+	    subleadjet = true;
+          }
+      }
+    }//jet features
+    
+    // check if leading and sub leading jets exist + are back to back + pt balanced
+    if(leadjet && subleadjet && deltaPhi(LeadJetTLV.Phi(),SubLeadJetTLV.Phi()) >= 2.5 && (LeadJetTLV.Pt()-SubLeadJetTLV.Pt())/(LeadJetTLV.Pt()+SubLeadJetTLV.Pt()) < 0.3) {
+      
+      xAOD::JetContainer::const_iterator jetItr, jet_cont_end = jet_cont->end();
+      
+      double dr_lim = 0.2;
+      
+      // to check if leading jet matches offline jet                                
+      for(jetItr=jet_cont->begin(); jetItr!=jet_cont_end; ++jetItr)
+	{
+	  if ((*jetItr)->pt() < 20000 || TMath::Abs((*jetItr)->eta()) > 2.5) continue;
+	  double dr_hlt = deltaR((*jetItr)->eta(),LeadJetTLV.Eta(),(*jetItr)->phi(),LeadJetTLV.Phi());
+	  if(dr_hlt>dr_lim) continue;
+	  off_match = true;
+	}
+      
+      if(off_match)
+	{
+	  
+	  /*	  xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end();
+	  //to check if leading jets matches an  offline tau
+	  for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr)
+	    {
+	      TLorentzVector TauTLV = (*recoItr)->p4();
+	      double pt_Tau = TauTLV.Pt();
+	      double eta_Tau = TauTLV.Eta();
+	      double phi_Tau = TauTLV.Phi();
+	      int ntrack_Tau = (*recoItr)->nTracks();
+	      bool good_Tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium);
+	      float charge_Tau = (*recoItr)->charge();
+	      if(pt_Tau<20000.) continue;
+	      if(fabs(eta_Tau) > 2.5) continue;
+	      if(fabs(charge_Tau) != 1.0) continue;
+	      if(ntrack_Tau!=1 && ntrack_Tau!=3) continue;
+	      if(!good_Tau) continue;
+	      double dR = deltaR(LeadJetTLV.Eta(),eta_Tau,LeadJetTLV.Phi(),phi_Tau);                                                                
+	      if(dR > dr_lim) continue;                                                                                                             
+	      tau_matching = true;
+	    }
+	  
+	  if(tau_matching){
+	  */
+	    for(unsigned int i=0;i<m_trigItemsHighPt.size();++i)
+	      {
+		std::string l1_chain(LowerChain("HLT_"+m_trigItemsHighPt[i]));
+		setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]);
+		hist("hdijetFakeTausPtDenom")->Fill(SubLeadJetTLV.Pt()/1000.);
+		if(L1TauMatching(l1_chain, SubLeadJetTLV, 0.3))  hist("hdijetFakeTausL1PtNum")->Fill(SubLeadJetTLV.Pt()/1000.);
+		if(HLTTauMatching(m_trigItemsHighPt[i], SubLeadJetTLV, 0.2)) hist("hdijetFakeTausHLTPtNum")->Fill(SubLeadJetTLV.Pt()/1000.);
+	      }
+	  }
+      //}
+    }
+    
+  }
+  
+  return StatusCode::SUCCESS;
+  
+}
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx
index e97c4080e6b287ce14d0c764050f801aee5251fb..5d1fa4b37224a3990bdd89551756e209d90d9174 100644
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx
@@ -100,104 +100,80 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
         if(m_RealZtautauEff)
         {
             setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff");
-            plotUnderOverFlow(hist("hRealBSTauPt"));
-            plotUnderOverFlow(hist("hRealBSTauEta"));
-            plotUnderOverFlow(hist("hRealBSTauPhi"));
-            plotUnderOverFlow(hist("hRealBSTauNTrack"));
-            plotUnderOverFlow(hist("hRealCandTau"));
-            plotUnderOverFlow(hist("hRealASTauPt"));
-            plotUnderOverFlow(hist("hRealASTauEta"));
-            plotUnderOverFlow(hist("hRealASTauPhi"));
-            plotUnderOverFlow(hist("hRealASTauNTrack"));
-            plotUnderOverFlow(hist("hRealSelectedTau"));
-            plotUnderOverFlow(hist("hRealTauMu"));
-            plotUnderOverFlow(hist("hRealMuTau"));
-            plotUnderOverFlow(hist("hRealBSMuPt"));
-            plotUnderOverFlow(hist("hRealBSMuEta"));
-            plotUnderOverFlow(hist("hRealBSMuPhi"));
-            plotUnderOverFlow(hist("hRealCandMu"));
-            plotUnderOverFlow(hist("hRealASMuPt"));
-            plotUnderOverFlow(hist("hRealASMuEta"));
-            plotUnderOverFlow(hist("hRealASMuPhi"));
-            plotUnderOverFlow(hist("hRealSelectedMu"));
-            plotUnderOverFlow(hist("hRealMET"));
-            plotUnderOverFlow(hist("hRealTauPt"));
-            plotUnderOverFlow(hist("hRealTauEta"));
-            plotUnderOverFlow(hist("hRealTauPhi"));
-            plotUnderOverFlow(hist("hRealTauNTrack"));
-            plotUnderOverFlow(hist("hRealTauCharge"));
-            plotUnderOverFlow(hist("hRealMuPt"));
-            plotUnderOverFlow(hist("hRealMuEta"));
-            plotUnderOverFlow(hist("hRealMuPhi"));
-            plotUnderOverFlow(hist("hRealMuCharge"));
-            plotUnderOverFlow(hist("hRealTauMuCosdPhi"));
-            plotUnderOverFlow(hist("hRealMETMuTransMass"));
-            plotUnderOverFlow(hist("hRealTauMuVisMass"));
-            plotUnderOverFlow(hist("hRealTauMuDPhi"));
-            plotUnderOverFlow(hist("hRealTauMuCharge"));
-            
-            for(unsigned int i=0;i<m_trigItems.size();++i){
+	    for(unsigned int i=0;i<m_trigItems.size();++i)
+	      {
                 setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]);
                 plotUnderOverFlow(hist("hRealZttPtDenom"));
                 plotUnderOverFlow(hist("hRealZttL1PtNum"));
                 plotUnderOverFlow(hist("hRealZttHLTPtNum"));
-            }
+	      }
         }
-        
+    
+	if(m_dijetFakeTausEff)
+          {
+            for(unsigned int i=0;i<m_trigItemsHighPt.size();++i){
+              setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]);
+              plotUnderOverFlow(hist("hdijetFakeTausPtDenom"));
+              plotUnderOverFlow(hist("hdijetFakeTausL1PtNum"));
+              plotUnderOverFlow(hist("hdijetFakeTausHLTPtNum"));
+	    }
+	    
+          }
+	
         for(unsigned int i=0;i<m_trigItems.size();++i)
-        {
+	  {
             if(m_truth && m_turnOnCurves)
-            {
-                setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                plotUnderOverFlow(hist("hTrueTauPtDenom"));
-                plotUnderOverFlow(hist("hTrueTauPt1PDenom"));
-                plotUnderOverFlow(hist("hTrueTauPt3PDenom"));
-                plotUnderOverFlow(hist("hTrueTauEtaDenom"));
-                plotUnderOverFlow(hist("hTrueTauPhiDenom"));
-                plotUnderOverFlow(hist("hTrueTauNTrackDenom"));
-                plotUnderOverFlow(hist("hTrueTauNVtxDenom"));
-                plotUnderOverFlow(hist("hTrueTauMuDenom"));
-                plotUnderOverFlow(hist("hTrueL1PtNum"));
-                plotUnderOverFlow(hist("hTrueL1Pt1PNum"));
-                plotUnderOverFlow(hist("hTrueL1Pt3PNum"));
-                plotUnderOverFlow(hist("hTrueL1EtaNum"));
-                plotUnderOverFlow(hist("hTrueL1PhiNum"));
-                plotUnderOverFlow(hist("hTrueL1NTrackNum"));
-                plotUnderOverFlow(hist("hTrueL1NVtxNum"));
-                plotUnderOverFlow(hist("hTrueL1MuNum"));
-                plotUnderOverFlow(hist("hTrueHLTPtNum"));
-                plotUnderOverFlow(hist("hTrueHLTPt1PNum"));
-                plotUnderOverFlow(hist("hTrueHLTPt3PNum"));
-                plotUnderOverFlow(hist("hTrueHLTEtaNum"));
-                plotUnderOverFlow(hist("hTrueHLTPhiNum"));
-                plotUnderOverFlow(hist("hTrueHLTNTrackNum"));
-                plotUnderOverFlow(hist("hTrueHLTNVtxNum"));
-                plotUnderOverFlow(hist("hTrueHLTMuNum"));
-                setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                plotUnderOverFlow(hist("hTruthRecoTauPtDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauPt1PDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauPt3PDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauEtaDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauPhiDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauNTrackDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauNVtxDenom"));
-                plotUnderOverFlow(hist("hTruthRecoTauMuDenom"));
-                plotUnderOverFlow(hist("hTruthRecoL1PtNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1Pt1PNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1Pt3PNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1EtaNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1PhiNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1NTrackNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1NVtxNum"));
-                plotUnderOverFlow(hist("hTruthRecoL1MuNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTPtNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTPt1PNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTPt3PNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTEtaNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTPhiNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTNTrackNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTNVtxNum"));
-                plotUnderOverFlow(hist("hTruthRecoHLTMuNum"));
+	      {
+		//                setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+		//                plotUnderOverFlow(hist("hTrueTauPtDenom"));
+		//                 plotUnderOverFlow(hist("hTrueTauPt1PDenom"));
+		//                 plotUnderOverFlow(hist("hTrueTauPt3PDenom"));
+		//                 plotUnderOverFlow(hist("hTrueTauEtaDenom"));
+		//                 plotUnderOverFlow(hist("hTrueTauPhiDenom"));
+		//               plotUnderOverFlow(hist("hTrueTauNTrackDenom"));
+                // plotUnderOverFlow(hist("hTrueTauNVtxDenom"));
+		//                plotUnderOverFlow(hist("hTrueTauMuDenom"));
+		//                plotUnderOverFlow(hist("hTrueL1PtNum"));
+		//                plotUnderOverFlow(hist("hTrueL1Pt1PNum"));
+		//                plotUnderOverFlow(hist("hTrueL1Pt3PNum"));
+		//                plotUnderOverFlow(hist("hTrueL1EtaNum"));
+		//                plotUnderOverFlow(hist("hTrueL1PhiNum"));
+		//                plotUnderOverFlow(hist("hTrueL1NTrackNum"));
+		//                plotUnderOverFlow(hist("hTrueL1NVtxNum"));
+		//                plotUnderOverFlow(hist("hTrueL1MuNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTPtNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTPt1PNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTPt3PNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTEtaNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTPhiNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTNTrackNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTNVtxNum"));
+		//                plotUnderOverFlow(hist("hTrueHLTMuNum"));
+		//                setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+		//                plotUnderOverFlow(hist("hTruthRecoTauPtDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauPt1PDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauPt3PDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauEtaDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauPhiDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauNTrackDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauNVtxDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoTauMuDenom"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1PtNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1Pt1PNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1Pt3PNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1EtaNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1PhiNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1NTrackNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1NVtxNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoL1MuNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTPtNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTPt1PNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTPt3PNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTEtaNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTPhiNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTNTrackNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTNVtxNum"));
+		//                plotUnderOverFlow(hist("hTruthRecoHLTMuNum"));
 //                setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
 //                plotUnderOverFlow(hist("hCombTauPtDenom"));
 //                plotUnderOverFlow(hist("hCombL1TauPtNum"));
@@ -227,32 +203,59 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
             if(m_turnOnCurves)
             {
                 setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                plotUnderOverFlow(hist("hRecoTauPtDenom"));
-                plotUnderOverFlow(hist("hRecoTauPt1PDenom"));
-                plotUnderOverFlow(hist("hRecoTauPt3PDenom"));
-                plotUnderOverFlow(hist("hRecoTauEtaDenom"));
-                plotUnderOverFlow(hist("hRecoTauPhiDenom"));
-                plotUnderOverFlow(hist("hRecoTauNTrackDenom"));
-                plotUnderOverFlow(hist("hRecoTauNVtxDenom"));
-                plotUnderOverFlow(hist("hRecoTauMuDenom"));
-                plotUnderOverFlow(hist("hRecoL1PtNum"));
-                plotUnderOverFlow(hist("hRecoL1Pt1PNum"));
-                plotUnderOverFlow(hist("hRecoL1Pt3PNum"));
-                plotUnderOverFlow(hist("hRecoL1EtaNum"));
-                plotUnderOverFlow(hist("hRecoL1PhiNum"));
-                plotUnderOverFlow(hist("hRecoL1NTrackNum"));
-                plotUnderOverFlow(hist("hRecoL1NVtxNum"));
-                plotUnderOverFlow(hist("hRecoL1MuNum"));
-                plotUnderOverFlow(hist("hRecoHLTPtNum"));
-                plotUnderOverFlow(hist("hRecoHLTPt1PNum"));
-                plotUnderOverFlow(hist("hRecoHLTPt3PNum"));
-                plotUnderOverFlow(hist("hRecoHLTEtaNum"));
-                plotUnderOverFlow(hist("hRecoHLTPhiNum"));
-                plotUnderOverFlow(hist("hRecoHLTNTrackNum"));
-                plotUnderOverFlow(hist("hRecoHLTNVtxNum"));
-                plotUnderOverFlow(hist("hRecoHLTMuNum"));
+		//                plotUnderOverFlow(hist("hRecoTauPtDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauPt1PDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauPt3PDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauEtaDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauPhiDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauNTrackDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauNVtxDenom"));
+		//                plotUnderOverFlow(hist("hRecoTauMuDenom"));
+		//                plotUnderOverFlow(hist("hRecoL1PtNum"));
+		//                plotUnderOverFlow(hist("hRecoL1Pt1PNum"));
+		//                plotUnderOverFlow(hist("hRecoL1Pt3PNum"));
+		//                plotUnderOverFlow(hist("hRecoL1EtaNum"));
+		//                plotUnderOverFlow(hist("hRecoL1PhiNum"));
+		//                plotUnderOverFlow(hist("hRecoL1NTrackNum"));
+		//                plotUnderOverFlow(hist("hRecoL1NVtxNum"));
+		//                plotUnderOverFlow(hist("hRecoL1MuNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTPtNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTPt1PNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTPt3PNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTEtaNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTPhiNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTNTrackNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTNVtxNum"));
+		//                plotUnderOverFlow(hist("hRecoHLTMuNum"));
 
 	    }
+
+	   if (m_doTrackCurves)
+	      {
+	      setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves");
+		
+	      plotUnderOverFlow(hist("hpstau_trk_pt"));
+              plotUnderOverFlow(hist("hpstau_trk_eta"));
+              plotUnderOverFlow(hist("hpstau_trk_phi"));
+              plotUnderOverFlow(hist("hpstau_trk_d0"));
+              plotUnderOverFlow(hist("hpstau_trk_z0"));
+	      plotUnderOverFlow(hist("hrecotau_trk_pt"));
+              plotUnderOverFlow(hist("hrecotau_trk_eta"));
+              plotUnderOverFlow(hist("hrecotau_trk_phi"));
+              plotUnderOverFlow(hist("hrecotau_trk_d0"));
+              plotUnderOverFlow(hist("hrecotau_trk_z0"));
+	      plotUnderOverFlow(hist("hrecotauNum_trk_pt"));
+              plotUnderOverFlow(hist("hrecotauNum_trk_eta"));
+              plotUnderOverFlow(hist("hrecotauNum_trk_phi"));
+              plotUnderOverFlow(hist("hrecotauNum_trk_d0"));
+              plotUnderOverFlow(hist("hrecotauNum_trk_z0"));
+	      plotUnderOverFlow(hist("hpstau_trkres_pt"));
+              plotUnderOverFlow(hist("hpstau_trkres_eta"));
+              plotUnderOverFlow(hist("hpstau_trkres_phi"));
+              plotUnderOverFlow(hist("hpstau_trkres_d0"));
+              plotUnderOverFlow(hist("hpstau_trkres_z0"));
+	      }
+
             
             setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/L1RoI");
             plotUnderOverFlow(hist("hL1RoIEta"));
@@ -275,7 +278,7 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
             plotUnderOverFlow(hist("hEta"));
             plotUnderOverFlow(hist("hPhi"));
             plotUnderOverFlow(hist("hFTFnWideTrack"));
-            plotUnderOverFlow(hist("hdRmax"));
+            //plotUnderOverFlow(hist("hdRmax"));
             
             setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/EFTau");
             plotUnderOverFlow(hist("hEFEt"));
@@ -385,46 +388,46 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
             if(m_truth && m_turnOnCurves)
             {
                 //Truth
-                divide("hTrueL1PtNum","hTrueTauPtDenom","hTrueL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1Pt1PNum","hTrueTauPt1PDenom","hTrueL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1Pt3PNum","hTrueTauPt3PDenom","hTrueL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1EtaNum","hTrueTauEtaDenom","hTrueL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1PhiNum","hTrueTauPhiDenom","hTrueL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1NTrackNum","hTrueTauNTrackDenom","hTrueL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1NVtxNum","hTrueTauNVtxDenom","hTrueL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueL1MuNum","hTrueTauMuDenom","hTrueL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide2("hTrueL1EtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTPtNum","hTrueTauPtDenom","hTrueHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTPt1PNum","hTrueTauPt1PDenom","hTrueHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTPt3PNum","hTrueTauPt3PDenom","hTrueHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTEtaNum","hTrueTauEtaDenom","hTrueHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTPhiNum","hTrueTauPhiDenom","hTrueHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTNTrackNum","hTrueTauNTrackDenom","hTrueHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTNVtxNum","hTrueTauNVtxDenom","hTrueHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide("hTrueHLTMuNum","hTrueTauMuDenom","hTrueHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
-                divide2("hTrueHLTEtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //divide("hTrueL1PtNum","hTrueTauPtDenom","hTrueL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1Pt1PNum","hTrueTauPt1PDenom","hTrueL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1Pt3PNum","hTrueTauPt3PDenom","hTrueL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1EtaNum","hTrueTauEtaDenom","hTrueL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1PhiNum","hTrueTauPhiDenom","hTrueL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1NTrackNum","hTrueTauNTrackDenom","hTrueL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1NVtxNum","hTrueTauNVtxDenom","hTrueL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueL1MuNum","hTrueTauMuDenom","hTrueL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      divide2("hTrueL1EtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTPtNum","hTrueTauPtDenom","hTrueHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTPt1PNum","hTrueTauPt1PDenom","hTrueHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTPt3PNum","hTrueTauPt3PDenom","hTrueHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTEtaNum","hTrueTauEtaDenom","hTrueHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTPhiNum","hTrueTauPhiDenom","hTrueHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTNTrackNum","hTrueTauNTrackDenom","hTrueHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTNVtxNum","hTrueTauNVtxDenom","hTrueHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      //                divide("hTrueHLTMuNum","hTrueTauMuDenom","hTrueHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
+	      divide2("hTrueHLTEtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency");
                 //Truth+Reco
-                divide("hTruthRecoL1PtNum","hTruthRecoTauPtDenom","hTruthRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1Pt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1Pt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1EtaNum","hTruthRecoTauEtaDenom","hTruthRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1PhiNum","hTruthRecoTauPhiDenom","hTruthRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1NTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1NVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoL1MuNum","hTruthRecoTauMuDenom","hTruthRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide2("hTruthRecoL1EtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTPtNum","hTruthRecoTauPtDenom","hTruthRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTPt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTPt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTEtaNum","hTruthRecoTauEtaDenom","hTruthRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTPhiNum","hTruthRecoTauPhiDenom","hTruthRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTNTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTNVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide("hTruthRecoHLTMuNum","hTruthRecoTauMuDenom","hTruthRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
-                divide2("hTruthRecoHLTEtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1PtNum","hTruthRecoTauPtDenom","hTruthRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1Pt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1Pt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1EtaNum","hTruthRecoTauEtaDenom","hTruthRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1PhiNum","hTruthRecoTauPhiDenom","hTruthRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1NTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1NVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoL1MuNum","hTruthRecoTauMuDenom","hTruthRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      divide2("hTruthRecoL1EtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTPtNum","hTruthRecoTauPtDenom","hTruthRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTPt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTPt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTEtaNum","hTruthRecoTauEtaDenom","hTruthRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTPhiNum","hTruthRecoTauPhiDenom","hTruthRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTNTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTNVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      //                divide("hTruthRecoHLTMuNum","hTruthRecoTauMuDenom","hTruthRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
+	      divide2("hTruthRecoHLTEtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency");
                 
                 //Combined trig eff
-                divide("hCombL1TauPtNum","hCombTauPtDenom","hCombL1TauPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
+                /*divide("hCombL1TauPtNum","hCombTauPtDenom","hCombL1TauPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
                 divide("hCombHLTTauPtNum","hCombTauPtDenom","hCombHLTTauPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
                 divide("hCombL1elPtNum","hCombelPtDenom","hCombL1elPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
                 divide("hCombHLTelPtNum","hCombelPtDenom","hCombHLTelPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
@@ -439,29 +442,29 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
                 divide("hCombL1dEtaNum","hCombdEtaDenom","hCombL1dEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
                 divide("hCombHLTdEtaNum","hCombdEtaDenom","hCombHLTdEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
                 divide("hCombL1dPhiNum","hCombdPhiDenom","hCombL1dPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
-                divide("hCombHLTdPhiNum","hCombdPhiDenom","hCombHLTdPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");
+                divide("hCombHLTdPhiNum","hCombdPhiDenom","hCombHLTdPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");*/
             }
             if(m_turnOnCurves)
             {
                 //Reco Only
-                divide("hRecoL1PtNum","hRecoTauPtDenom","hRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1Pt1PNum","hRecoTauPt1PDenom","hRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1Pt3PNum","hRecoTauPt3PDenom","hRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1EtaNum","hRecoTauEtaDenom","hRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1PhiNum","hRecoTauPhiDenom","hRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1NTrackNum","hRecoTauNTrackDenom","hRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1NVtxNum","hRecoTauNVtxDenom","hRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoL1MuNum","hRecoTauMuDenom","hRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide2("hRecoL1EtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTPtNum","hRecoTauPtDenom","hRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTPt1PNum","hRecoTauPt1PDenom","hRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTPt3PNum","hRecoTauPt3PDenom","hRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTEtaNum","hRecoTauEtaDenom","hRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTPhiNum","hRecoTauPhiDenom","hRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTNTrackNum","hRecoTauNTrackDenom","hRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTNVtxNum","hRecoTauNVtxDenom","hRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide("hRecoHLTMuNum","hRecoTauMuDenom","hRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
-                divide2("hRecoHLTEtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1PtNum","hRecoTauPtDenom","hRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1Pt1PNum","hRecoTauPt1PDenom","hRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1Pt3PNum","hRecoTauPt3PDenom","hRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1EtaNum","hRecoTauEtaDenom","hRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1PhiNum","hRecoTauPhiDenom","hRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1NTrackNum","hRecoTauNTrackDenom","hRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1NVtxNum","hRecoTauNVtxDenom","hRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoL1MuNum","hRecoTauMuDenom","hRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	                      divide2("hRecoL1EtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTPtNum","hRecoTauPtDenom","hRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTPt1PNum","hRecoTauPt1PDenom","hRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTPt3PNum","hRecoTauPt3PDenom","hRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTEtaNum","hRecoTauEtaDenom","hRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTPhiNum","hRecoTauPhiDenom","hRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTNTrackNum","hRecoTauNTrackDenom","hRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTNVtxNum","hRecoTauNVtxDenom","hRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	      //                divide("hRecoHLTMuNum","hRecoTauMuDenom","hRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
+	                      divide2("hRecoHLTEtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency");
                 
             }
             if(m_RealZtautauEff)
@@ -469,11 +472,31 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
                 divide("hRealZttL1PtNum","hRealZttPtDenom","hRealZttL1PtEfficiency","HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]);
                 divide("hRealZttHLTPtNum","hRealZttPtDenom","hRealZttHLTPtEfficiency","HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]);
             }
+
+	    if (m_doTrackCurves)
+	    { divide("hrecotauNum_trk_pt","hrecotau_trk_pt","hpstau_trkeff_pt","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves");
+	      divide("hrecotauNum_trk_eta","hrecotau_trk_eta","hpstau_trkeff_eta","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves");
+	      divide("hrecotauNum_trk_phi","hrecotau_trk_phi","hpstau_trkeff_phi","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves");
+	      divide("hrecotauNum_trk_d0","hrecotau_trk_d0","hpstau_trkeff_d0","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves");
+              divide("hrecotauNum_trk_z0","hrecotau_trk_z0","hpstau_trkeff_z0","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves");
+	    }
+
+	   
         }//End of trigItem loop
-        
+    
+	if(m_dijetFakeTausEff)
+	  {
+	    for(unsigned int i=0;i<m_trigItemsHighPt.size();++i)
+	      {
 
-	if(m_turnOnCurves){
+		divide("hdijetFakeTausL1PtNum","hdijetFakeTausPtDenom","hdijetFakeTausL1PtEfficiency","HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]);
+		divide("hdijetFakeTausHLTPtNum","hdijetFakeTausPtDenom","hdijetFakeTausHLTPtEfficiency","HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]);
+	      }
+	  }
 
+      
+	if(m_turnOnCurves){
+	  /*
 		setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); 
 
 		plotUnderOverFlow(hist("hRecoHLT25PtNum"));
@@ -551,7 +574,7 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
                 divide("hRecoHLT25NVtxNum_2","hRecoTau25NVtxDenom_2","hRecoHLT25NVtxEfficiency_2","HLT/TauMon/Expert/HLTefficiency");
                 divide("hRecoHLT25MuNum_2","hRecoTau25MuDenom_2","hRecoHLT25MuEfficiency_2","HLT/TauMon/Expert/HLTefficiency");
                 
-
+*/
 	}
 
 	if(m_doTopoValidation){
@@ -566,9 +589,10 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
 		}
 	}
 
-	if(m_doTestTracking){
+	/*if(m_doTestTracking){
 		setCurrentMonGroup("HLT/TauMon/Expert/FTF_track_comparison");
-	}
+	}*/
+
 
         // clone shifter histograms
         std::vector<string> lowest_names, lowest_trigger_names;
@@ -599,14 +623,19 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
             cloneHistogram("hL1RoIHadIsol","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/L1RoI");
             cloneHistogram2("hL1EtaVsPhi","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/L1RoI");
             cloneHistogram2("hL1RoITauClusEMIso","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/L1RoI");
-            
+
+	    if(m_emulation){
+		setCurrentMonGroup("HLT/TauMon/Shifter/"+lowest_names.at(i)+"/Emulation");
+	    	cloneHistogram("hL1Emulation","HLT/TauMon/Expert/Emulation");
+	    }
+
             setCurrentMonGroup("HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionTau");
             cloneHistogram("hEFEt","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
             cloneHistogram("hFTFnTrack","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
             cloneHistogram("hFTFnWideTrack","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
             cloneHistogram("hEta","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
             cloneHistogram("hPhi","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
-            cloneHistogram("hdRmax","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
+            //cloneHistogram("hdRmax","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
             cloneHistogram2("hEFEtaVsPhi","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau");
             
             setCurrentMonGroup("HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionVsOffline");
@@ -723,6 +752,8 @@ StatusCode  HLTTauMonTool::proc(bool endOfEventsBlock, bool  endOfLumiBlock, boo
                 //         cloneHistogram("hRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
                 
                 cloneProfile("TProfRecoL1PtEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
+                cloneProfile("TProfRecoL1HighPt1PEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
+                cloneProfile("TProfRecoHLTHighPtEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
                 cloneProfile("TProfRecoHLTPtEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
                 cloneProfile("TProfRecoL1PhiEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
                 cloneProfile("TProfRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency");
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx
index bc2bb9e69d7a210c2b2632cbdd090cd61847ba36..7a12ecef29e79464e8b21600c0590dc3ee50d29c 100755
--- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx
@@ -96,6 +96,7 @@ using namespace AnalysisUtils;
 const float PI=2.0*acos(0.);
 const float TWOPI=2.0*PI;
 
+/*
 StatusCode  HLTTauMonTool::test2StepTracking(){
 
   ATH_MSG_DEBUG("Executing HLTTauMonTool::test2StepTracking()");
@@ -664,9 +665,9 @@ StatusCode  HLTTauMonTool::test2StepTracking(){
   return StatusCode::SUCCESS; 
 }
 
+*/
 
-
-bool  HLTTauMonTool::emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min=0.){
+/*bool  HLTTauMonTool::emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min=0.){
 
 	bool pass(false);
 	
@@ -860,3 +861,5 @@ bool  HLTTauMonTool::emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2
 	ATH_MSG_DEBUG("nCore "<<nCore_track<<", nWide "<<nWide_track<<", pass "<<pass);
 	return pass;
 }
+
+*/
diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_trackCurves.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_trackCurves.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..8aa4993a734c4e8d97b6346bc96bc68c739eccda
--- /dev/null
+++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_trackCurves.cxx
@@ -0,0 +1,287 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+//  @file HLTTauMonTool_trackCurves.cxx
+//  created by Milena Bajic <milena.bajic@cern.ch>
+
+
+
+#include "GaudiKernel/IJobOptionsSvc.h"
+#include "AthenaMonitoring/AthenaMonManager.h"
+#include "AthenaMonitoring/ManagedMonitorToolTest.h"
+#include "AnalysisUtils/AnalysisMisc.h"
+
+#include "GaudiKernel/MsgStream.h"
+#include "GaudiKernel/StatusCode.h"
+#include "GaudiKernel/ITHistSvc.h"
+#include "GaudiKernel/PropertyMgr.h"
+#include "GaudiKernel/IToolSvc.h"
+#include "StoreGate/StoreGateSvc.h"
+#include "EventInfo/TriggerInfo.h"
+#include "TrigSteeringEvent/HLTResult.h"
+#include "EventInfo/EventInfo.h"
+#include <EventInfo/EventID.h>
+#include "xAODEventInfo/EventInfo.h"
+
+#include "TrigDecisionTool/FeatureContainer.h"
+#include "TrigDecisionTool/Feature.h"
+#include "TrigSteeringEvent/TrigOperationalInfo.h"
+#include "TrigSteeringEvent/TrigOperationalInfoCollection.h"
+#include "TrigSteeringEvent/TrigRoiDescriptor.h"
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
+
+#include "TrigSteeringEvent/TrigOperationalInfoCollection.h"
+
+#include "TrigConfL1Data/PrescaleSet.h"
+
+#include "TrigTauEmulation/Level1EmulationTool.h"
+#include "TrigTauEmulation/HltEmulationTool.h"
+
+#include "xAODTau/TauJet.h"
+#include "xAODTau/TauJetContainer.h"
+#include "xAODTau/TauJetAuxContainer.h"
+#include "xAODTau/TauDefs.h"
+
+#include "xAODTrigger/EmTauRoI.h"
+#include "xAODTrigger/EmTauRoIContainer.h"
+
+#include "xAODTruth/TruthParticleContainer.h"
+#include "xAODTruth/TruthParticle.h"
+#include "xAODTruth/TruthVertex.h"
+#include "xAODTruth/TruthVertexContainer.h"
+
+#include "xAODTracking/TrackParticle.h"
+#include "xAODTracking/TrackParticleContainer.h"
+
+#include "xAODMissingET/MissingET.h"
+#include "xAODMissingET/MissingETContainer.h"
+
+#include "xAODMuon/Muon.h"
+#include "xAODMuon/MuonContainer.h"
+
+#include "xAODEgamma/Electron.h"
+#include "xAODEgamma/ElectronContainer.h"
+
+#include "xAODJet/Jet.h"
+#include "xAODJet/JetContainer.h"
+
+#include "VxVertex/VxContainer.h"
+
+#include "TROOT.h"
+#include "TH1I.h"
+#include "TH1F.h"
+#include "TH2I.h"
+#include "TH2F.h"
+#include "TEfficiency.h"
+#include "TProfile.h"
+
+#include <vector>
+#include <iostream>
+#include <fstream>
+//#define _USE_MATH_DEFINES
+#include <math.h>
+
+
+#include "TrigHLTMonitoring/IHLTMonTool.h"
+
+#include "HLTTauMonTool.h"
+
+using namespace std;
+
+
+StatusCode HLTTauMonTool::trackCurves(const std::string & trigItem){
+    
+    ATH_MSG_DEBUG ("HLTTauMonTool::doTrackCurves");
+    setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/trackCurves");
+    
+    std::string trig_item_EF = "HLT_"+trigItem;
+    std::string trig_item_L1(LowerChain( trig_item_EF ) );
+    
+    const xAOD::TauJetContainer* reco_cont = 0;
+    if( evtStore()->retrieve(reco_cont, "TauJets").isFailure() ){
+        ATH_MSG_WARNING("Failed to retrieve TauJets container. Exiting!");
+        return StatusCode::FAILURE;
+    }
+    
+    xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end();
+    for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr) {
+        if(!Selection(*recoItr)) { continue; }
+        if(!TruthMatched(*recoItr)) { continue; }
+        
+        bool presmatch = false; //true if reco+truth is matched to preselection
+        const xAOD::TauJet* matchedTau = 0 ;
+        
+        if (not getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition)) {
+            continue; //presmatch will never be true otherwise anyway
+        }   
+
+        Trig::FeatureContainer f = ( getTDT()->features(trig_item_EF,m_HLTTriggerCondition) );
+
+        for(const auto& comb: f.getCombinations()) {
+            
+            const std::vector< Trig::Feature<xAOD::TauJetContainer> >  vec_preseltau = comb.get<xAOD::TauJetContainer>("TrigTauRecPreselection", m_HLTTriggerCondition);
+            
+            for(const auto& preselTau : vec_preseltau) {
+                const auto *preselTauJetVec = preselTau.cptr();
+                if(not preselTauJetVec) {
+                    continue;
+                }
+		for (unsigned int tauit = 0; tauit< (*preselTauJetVec).size();++tauit){
+               	    const auto *preselTauJet = (*preselTauJetVec)[tauit];
+                    double dR_recopres = deltaR( preselTauJet->eta(), (*recoItr)->eta(), preselTauJet->phi(), preselTauJet->phi() );
+               	    if  (dR_recopres < 0.2) { 
+			presmatch = true;
+			matchedTau = preselTauJet;
+                        break;
+			}
+		    }
+           	 }
+	}
+        
+	// If reco is not matched to preselection tau,skip this tau and skip the filling of all of the next plots
+        if (!presmatch) { // skip this reco tau and all the rest if it is not matched to preselection
+            continue;
+        }
+
+	if(matchedTau->nTracks() == 0) { 
+	    continue; 
+	}
+
+	hist2("hreco_vs_pres_coreTracks")->Fill((*recoItr)->nTracks(), matchedTau->nTracks());
+	hist2("hreco_vs_pres_isoTracks")->Fill( (*recoItr)->nWideTracks(), (*recoItr)->nWideTracks() );
+        
+        for (unsigned int recoTrack = 0; recoTrack < (*recoItr)->nTracks(); ++recoTrack){
+            const xAOD::TrackParticle* recotau_trk = (*recoItr)->track(recoTrack);
+            float recotau_trk_pt = recotau_trk->pt()/1000.;
+            float recotau_trk_eta = recotau_trk->eta();
+            float recotau_trk_phi = recotau_trk->phi();
+            float recotau_trk_d0 = recotau_trk->d0();
+            float recotau_trk_z0 = recotau_trk->z0();
+
+  	    //Those plots are used in the efficiency plots, as denominator
+            hist("hrecotau_trk_pt")->Fill(recotau_trk_pt);
+            hist("hrecotau_trk_eta")->Fill(recotau_trk_eta);
+            hist("hrecotau_trk_phi")->Fill(recotau_trk_phi);
+            hist("hrecotau_trk_d0")->Fill(recotau_trk_d0);
+            hist("hrecotau_trk_z0")->Fill(recotau_trk_z0);
+            hist2("hrecotau_trk_etaphi")->Fill(recotau_trk_eta, recotau_trk_phi);
+            
+            //Now find the closest track
+            double dRtracksmin = 9999;
+            const xAOD::TrackParticle* pstau_trk_clos = 0;        
+
+            for (unsigned int i = 0; i < matchedTau->nTracks(); ++i){
+                const xAOD::TrackParticle* pstau_trk = matchedTau->track(i);
+                double dRtracks = deltaR (pstau_trk->eta(), recotau_trk_eta, pstau_trk->phi(), recotau_trk_phi);
+                if (dRtracks < dRtracksmin) {
+                    dRtracksmin = dRtracks;
+                    pstau_trk_clos = pstau_trk;
+                }
+            }
+            
+            double dRtracks_min = deltaR (pstau_trk_clos->eta(), recotau_trk_eta, pstau_trk_clos->phi(), recotau_trk_phi); //equal to dRtracksmin
+	    bool tracksMatched = false;
+	    if ( dRtracks_min< 0.1 ) {tracksMatched = true;}
+	
+	    if (tracksMatched == false) {
+ 		 //Fill TProfile
+		std::cout<<" Track curves: filling TProfile, starting pt, line 185 "<<std::endl;
+	    	profile("TProfPresVsRecoPtEfficiency")->Fill(recotau_trk_pt, 0); 
+            	profile("TProfPresVsRecoEtaEfficiency")->Fill(recotau_trk_eta, 0);
+            	profile("TProfPresVsRecoPhiEfficiency")->Fill(recotau_trk_phi, 0);
+            	profile("TProfPresVsRecod0Efficiency")->Fill(recotau_trk_d0, 0);
+            	profile("TProfPresVsRecoz0Efficiency")->Fill(recotau_trk_z0, 0);
+		std::cout<<" Track curves: finishing Profile, line 192 "<<std::endl;
+		continue; // skip the filling of the next plots if the tracks are not matched
+		}
+
+	    if (tracksMatched == true){
+	    // All the next plots are not filled if the tracks are not matched
+            	hist("hrecotauNum_trk_pt")->Fill(recotau_trk_pt); //Num plots are taken in the efficency plots, as numenator
+            	hist("hrecotauNum_trk_eta")->Fill(recotau_trk_eta);
+            	hist("hrecotauNum_trk_phi")->Fill(recotau_trk_phi);
+            	hist("hrecotauNum_trk_d0")->Fill(recotau_trk_d0);
+            	hist("hrecotauNum_trk_z0")->Fill(recotau_trk_z0);
+            	hist2("hrecotauNum_trk_etaphi")->Fill(recotau_trk_eta, recotau_trk_phi);
+            
+            	float pstau_trk_pt = pstau_trk_clos->pt()/1000.;
+            	float pstau_trk_eta = pstau_trk_clos->eta();
+            	float pstau_trk_phi = pstau_trk_clos->phi();
+            	float pstau_trk_d0 = pstau_trk_clos->d0();
+            	float pstau_trk_z0 = pstau_trk_clos->z0();
+            
+          	hist("hpstau_trk_pt")->Fill(pstau_trk_pt);
+           	hist("hpstau_trk_eta")->Fill(pstau_trk_eta);
+            	hist("hpstau_trk_phi")->Fill(pstau_trk_phi);
+            	hist("hpstau_trk_d0")->Fill(pstau_trk_d0);
+            	hist("hpstau_trk_z0")->Fill(pstau_trk_z0);
+            	hist2("hpstau_trk_etaphi")->Fill(pstau_trk_eta, pstau_trk_phi);
+            
+           	hist("hpstau_trkres_pt")->Fill((pstau_trk_pt - recotau_trk_pt)/recotau_trk_pt);  //this is not filled if the tracks are not matched
+            	hist("hpstau_trkres_eta")->Fill((pstau_trk_eta - recotau_trk_eta)/recotau_trk_eta);
+            	hist("hpstau_trkres_phi")->Fill((pstau_trk_phi - recotau_trk_phi)/recotau_trk_phi);
+           	hist("hpstau_trkres_d0")->Fill((pstau_trk_d0 - recotau_trk_d0)/recotau_trk_d0);
+           	hist("hpstau_trkres_z0")->Fill((pstau_trk_z0 - recotau_trk_z0)/recotau_trk_z0);
+
+           	 //2d plots of Reco vs preselection tracks
+            	hist2("hpstautrk_vs_recotrk_pt")->Fill(pstau_trk_pt,recotau_trk_pt);
+            	hist2("hpstautrk_vs_recotrk_eta")->Fill(pstau_trk_eta,recotau_trk_eta);
+           	hist2("hpstautrk_vs_recotrk_phi")->Fill(pstau_trk_phi,recotau_trk_phi);
+           	hist2("hpstautrk_vs_recotrk_d0")->Fill(pstau_trk_d0,recotau_trk_d0);
+           	hist2("hpstautrk_vs_recotrk_z0")->Fill(pstau_trk_z0,recotau_trk_z0);
+
+	    	profile("TProfPresVsRecoPtEfficiency")->Fill(recotau_trk_pt, 1); 
+            	profile("TProfPresVsRecoEtaEfficiency")->Fill(recotau_trk_eta, 1);
+            	profile("TProfPresVsRecoPhiEfficiency")->Fill(recotau_trk_phi, 1);
+            	profile("TProfPresVsRecod0Efficiency")->Fill(recotau_trk_d0, 1);
+            	profile("TProfPresVsRecoz0Efficiency")->Fill(recotau_trk_z0, 1);
+	    }
+        }
+    } //end of the reco loop
+    
+    return StatusCode::SUCCESS;
+}
+
+
+bool HLTTauMonTool::TruthMatched( const xAOD::TauJet * tau){
+    // the function returns true if tau is matched to truth tau
+    bool truthmatch = false;
+    
+    const xAOD::TruthParticleContainer* truth_cont = 0;
+    
+    if( evtStore()->retrieve(truth_cont, "TruthParticles" ).isFailure() ){
+        ATH_MSG_WARNING("Failed to retrieve TruthParticle container. Exiting.");
+        return StatusCode::FAILURE;
+    }
+    
+    xAOD::TruthParticleContainer::const_iterator truthItr,truth_cont_end = truth_cont->end();
+    for (truthItr=truth_cont->begin(); truthItr != truth_cont_end; ++truthItr){
+        if (abs((*truthItr)->pdgId()) == 15  && (*truthItr)->status() == 2) {
+            examineTruthTau(**truthItr);
+            double pt  = (*truthItr)->auxdata<double>("pt_vis");
+            double eta = (*truthItr)->auxdata<double>("eta_vis");
+            double phi = (*truthItr)->auxdata<double>("phi_vis");
+            //double m   = (*truthItr)->auxdata<double>("m_vis");
+            bool lep = (*truthItr)->auxdata<bool>("IsLeptonicTau");
+            int ntracks = (*truthItr)->auxdata<int>("nTracks");
+            if(pt < m_effOffTauPtCut || lep || fabs(eta) > 2.47 ) continue;
+            if(m_selection_nTrkMax>-1 && ntracks>m_selection_nTrkMax) continue;
+            if(m_selection_nTrkMin>-1 && ntracks<m_selection_nTrkMin) continue;
+            if(m_selection_ptMax>-1 && pt>m_selection_ptMax) continue;
+            if(m_selection_ptMin>-1 && pt<m_selection_ptMin) continue;
+            if(m_selection_absEtaMax>-1 && fabs(eta)>m_selection_absEtaMax) continue;
+            if(m_selection_absEtaMin>-1 && fabs(eta)<m_selection_absEtaMin) continue;
+            if(m_selection_absPhiMax>-1 && fabs(phi)>m_selection_absPhiMax) continue;
+   	        if(m_selection_absPhiMin>-1 && fabs(phi)<m_selection_absPhiMin) continue;
+            float dR = deltaR(eta, tau->eta(), phi, tau->phi());
+            if ( dR<0.2 ) truthmatch = true;
+        }}
+    return truthmatch;
+}
+
+
+
+
+
+