From aa4fa48617d4be5b0f18271c5e422bf91e409a37 Mon Sep 17 00:00:00 2001
From: Patrick Karl Czodrowski <patrick.czodrowski@cern.ch>
Date: Fri, 30 Oct 2015 12:46:36 +0100
Subject: [PATCH] fix ATN conf file to remove duplicate ID
 (TrigAnalysisTest-00-04-18)

    * fix typo in test steering xml
    * TrigAnalysisTest-00-04-17

2015-09-28 Patrick Czodrowski <czodrows@cern.ch>
    * add new ATN MonitoringTest from DataAOD and also PhysValMon from ESD
    * TrigAnalysisTest-00-04-16

jmontejo 00-04-12-15

2015-09-28 Gordon Watts <gwatts@uw.edu>
    * add Simple test case for a RootCore unit test
    * TrigAnalysisTest-00-04-12

2015-09-02 Patrick Czodrowski <czodrows@cern.ch>
    * deactivate MC_standalone (ATN) and Split(RTT) in xml
    * try to prevent the chaindump to be run in certain tets
    * TrigAnalysisTest-00-04-11
---
 .../Testing/TrigAnalysisTest.conf             |  58 ++-
 .../TrigAnalysisTest/TriggersFiredTest.h      |  65 +++
 .../TrigAnalysisTest/cmt/Makefile.RootCore    |  58 +++
 .../TrigAnalysisTest/cmt/requirements         |  10 +-
 .../share/TriggersFiredTest_jobOptions.py     |   9 +
 .../share/testAthenaTrigESD_HLTMonitoring.py  |   3 -
 .../src/TriggersFiredTest.cxx                 | 100 ++++
 .../components/TrigAnalysisTest_entries.cxx   |  12 +
 .../src/components/TrigAnalysisTest_load.cxx  |   5 +
 ...sTest_AthAnalysisBaseTestConfiguration.xml |  21 +
 .../TrigAnalysisTest_TestConfiguration.xml    | 469 +++++-------------
 .../test/ut_triggers_fired.cxx                |  98 ++++
 12 files changed, 554 insertions(+), 354 deletions(-)
 create mode 100755 Trigger/TrigValidation/TrigAnalysisTest/TrigAnalysisTest/TriggersFiredTest.h
 create mode 100644 Trigger/TrigValidation/TrigAnalysisTest/cmt/Makefile.RootCore
 create mode 100644 Trigger/TrigValidation/TrigAnalysisTest/share/TriggersFiredTest_jobOptions.py
 create mode 100755 Trigger/TrigValidation/TrigAnalysisTest/src/TriggersFiredTest.cxx
 create mode 100644 Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_entries.cxx
 create mode 100644 Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_load.cxx
 create mode 100755 Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml
 create mode 100644 Trigger/TrigValidation/TrigAnalysisTest/test/ut_triggers_fired.cxx

diff --git a/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf b/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf
index caf284402bb..2049a346cdf 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf
+++ b/Trigger/TrigValidation/TrigAnalysisTest/Testing/TrigAnalysisTest.conf
@@ -475,13 +475,53 @@ test 37
   post_command checkFile.py ESD.pool.root > ESD.txt
 #  edmcheck diffPoolFiles.py ESD.pool.root  /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/ATN/postrel20/latest/triganalysistest_AthenaTrigBStoESD_MC_ESD.pool.root
 
-test 38
+test 39
   name PhysValMonitoring
   joboptions None
   doc runs PhysValMonitoring on AOD, uses ../AthenaTrigRDOtoAOD_MC/AOD.pool.root 
   pre_condition if [[ $(find ../AthenaTrigRDOtoAOD_MC/AOD.pool.root -type f -size +1000000c 2>/dev/null) ]] ; then test -e ../AthenaTrigRDOtoAOD_MC/AOD.pool.root ; else test -e non_existing_file ; fi  
+  athena_cmd Reco_tf.py --checkEventCount FALSE --fileValidation FALSE --valid TRUE --maxEvents 5 --inputAODFile `find ../AthenaTrigRDOtoAOD_MC/  -name "AOD.pool.root" -printf %p,` --outputNTUP_PHYSVALFile physval.root --validationFlags noExample doTrigMinBias doTrigIDtrk doTrigMET doTrigJet doTrigTau doTrigEgamma doTrigMuon doTrigBphys doTrigBjet 
+  post_command perl -i.clean -pe 's/^[\d:]+ //' log.PhysicsValidation 
+  post_command cp physval.root physval2.root
+  post_command mkdir html
+  post_command physval_make_web_display.py --reffile Same:physval.root --outdir=html --title Same physval2.root 
+  post_command cat log.PhysicsValidation >> PhysValMonitoring_test.log  
+  checklog --config checklogTriggerTest.conf --showexcludestats
+
+test 40
+  name MonitoringDataESDAOD
+  joboptions None
+  doc runs Monitoring on ESD to AOD to HIST Reco_tf, uses root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_13TeV.00281143.physics_Main.recon.ESD.f629/data15_13TeV.00281143.physics_Main.recon.ESD.f629._lb0130._SFO-5._0003_001.1  
+  athena_cmd Reco_tf.py --maxEvents 10 --inputESDFile root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_13TeV.00281143.physics_Main.recon.ESD.f629/data15_13TeV.00281143.physics_Main.recon.ESD.f629._lb0130._SFO-5._0003_001.1 --outputHIST_AODFile myHIST.root --autoConfiguration everything 
+  post_command checkFile.py tmp.AOD > AOD.txt
+  post_command checkxAOD.py tmp.AOD > AOD.checkxAODFile.txt
+  post_command perl -i.clean -pe 's/^[\d:]+ //' log.ESDtoAOD 
+  post_command perl -i.clean -pe 's/^[\d:]+ //' log.AODtoHIST
+  post_command cp myHIST.root myHIST2.root
+  post_command mkdir html
+  post_command physval_make_web_display.py --reffile Same:myHIST.root --outdir=html --title Same myHIST2.root 
+  post_command perl -i.clean -pe 's/^[\d:]+ //' log.PhysicsValidation 
+  post_command cat log.PhysicsValidation >> MonitoringESD_test.log  
+  checklog --config checklogTriggerTest.conf --showexcludestats
+
+test 41
+  name MonitoringDataAOD
+  joboptions None
+  doc runs Monitoring AOD to HIST Reco_tf, uses root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_13TeV.00281143.physics_Main.merge.AOD.f629_m1504/data15_13TeV.00281143.physics_Main.merge.AOD.f629_m1504._lb1522._0001.1
+  athena_cmd Reco_tf.py --maxEvents 10 --inputAODFile root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_13TeV.00281143.physics_Main.merge.AOD.f629_m1504/data15_13TeV.00281143.physics_Main.merge.AOD.f629_m1504._lb1522._0001.1  --outputHIST_AODFile myHIST.root --autoConfiguration everything 
+  post_command cp myHIST.root myHIST2.root
+  post_command mkdir html
+  post_command physval_make_web_display.py --reffile Same:myHIST.root --outdir=html --title Same myHIST2.root 
+  post_command perl -i.clean -pe 's/^[\d:]+ //' log.PhysicsValidation 
+  post_command cat log.PhysicsValidation >> MonitoringAOD_test.log  
   checklog --config checklogTriggerTest.conf --showexcludestats
-  athena_cmd Reco_tf.py --inputAODFile `find ../AthenaTrigRDOtoAOD_MC/  -name "AOD.pool.root" -printf %p,` --outputNTUP_PHYSVALFile physval.root --validationFlags noExample doTrigMinBias doTrigIDtrk doTrigMET doTrigJet doTrigTau doTrigEgamma doTrigMuon doTrigBphys doTrigBjet 
+
+#the following one is actually useless ... as the hist 
+test 42
+  name PhysValMonitoringDataESD 
+  joboptions None
+  doc runs PhysValMonitoring on ESD   
+  athena_cmd Reco_tf.py --checkEventCount FALSE --fileValidation FALSE --valid TRUE --maxEvents 5 --inputESDFile root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_13TeV.00281143.physics_Main.recon.ESD.f629/data15_13TeV.00281143.physics_Main.recon.ESD.f629._lb0130._SFO-5._0003_001.1 --outputNTUP_PHYSVALFile physval.root --validationFlags noExample doTrigMinBias doTrigIDtrk doTrigMET doTrigJet doTrigTau doTrigEgamma doTrigMuon doTrigBphys doTrigBjet --steering PhysicsValidation:in-AOD,in+ESD
   post_command perl -i.clean -pe 's/^[\d:]+ //' log.PhysicsValidation 
   post_command cp physval.root physval2.root
   post_command mkdir html
@@ -489,7 +529,19 @@ test 38
   post_command cat log.PhysicsValidation >> PhysValMonitoring_test.log  
   checklog --config checklogTriggerTest.conf --showexcludestats
 
-test 39
+test 43
+  name PhysValMonitoringDataAOD
+  joboptions None
+  doc runs PhysValMonitoring on AOD  
+  athena_cmd Reco_tf.py --checkEventCount FALSE --fileValidation FALSE --valid TRUE --maxEvents 5 --inputAODFile root://eosatlas//eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/data15_13TeV.00281143.physics_Main.merge.AOD.f629_m1504/data15_13TeV.00281143.physics_Main.merge.AOD.f629_m1504._lb1522._0001.1 --outputNTUP_PHYSVALFile physval.root --validationFlags noExample doTrigMinBias doTrigIDtrk doTrigMET doTrigJet doTrigTau doTrigEgamma doTrigMuon doTrigBphys doTrigBjet 
+  post_command perl -i.clean -pe 's/^[\d:]+ //' log.PhysicsValidation 
+  post_command cp physval.root physval2.root
+  post_command mkdir html
+  post_command physval_make_web_display.py --reffile Same:physval.root --outdir=html --title Same physval2.root 
+  post_command cat log.PhysicsValidation >> PhysValMonitoring_test.log  
+  checklog --config checklogTriggerTest.conf --showexcludestats
+
+test 44
   name MC_standalone
   doc TriggerRelease/runHLT_standalone.py
   joboptions TriggerRelease/runHLT_standalone.py
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/TrigAnalysisTest/TriggersFiredTest.h b/Trigger/TrigValidation/TrigAnalysisTest/TrigAnalysisTest/TriggersFiredTest.h
new file mode 100755
index 00000000000..f801016e23e
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/TrigAnalysisTest/TriggersFiredTest.h
@@ -0,0 +1,65 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/** J.Montejo - 15/10/2015 - tests for TrigDecisionTool **/
+
+#ifndef TriggersFiredTest_TriggersFiredTest_H
+#define TriggersFiredTest_TriggersFiredTest_H
+
+// std stuff
+#include <vector>
+#include <string>
+#include <map>
+#include <fstream>
+#include <iostream>
+
+// Base class
+#include "AthenaBaseComps/AthAlgorithm.h"
+
+// core stuff
+#include "GaudiKernel/ToolHandle.h"
+
+// Trigger includes
+#include "TrigDecisionTool/TrigDecisionTool.h"
+//#include "TrigConfInterfaces/ITrigConfigSvc.h"
+//#include "TrigConfxAOD/xAODConfigTool.h"
+
+using namespace std;
+using namespace Trig;
+using namespace TrigConf;
+using namespace xAOD;
+
+/**
+ * @class TriggersFiredTest
+ * bSimple algorithm to check fired triggers with TrigDecisionTool
+ *
+ * @author Javier Montejo  <jmontejo@cern.ch>  - CERN
+ */
+class TriggersFiredTest : public AthAlgorithm
+{
+  
+ public:
+  
+  TriggersFiredTest(const std::string &name, ISvcLocator *pSvcLocator); //!< std Gaudi Algorithm constructor
+  ~TriggersFiredTest();//!< std  deconstructor
+  
+  // IAlgorithm virtual methods to implement
+  StatusCode initialize();//!< std Gaudi initialize method
+  StatusCode execute(); //!< std Gaudi execute method -> use TrigDecisionTool to 'look' at the trigger data
+  StatusCode finalize();//!< std Gaudi finalize method
+  
+ private:
+
+  std::string m_trigDecisionKey; //!< SG key of the trigger data (TrigDecision object)
+  bool m_first_event;
+  std::vector<std::string> m_TestList;
+
+  ToolHandle<Trig::TrigDecisionTool> m_trigDec; //!< interface to use the trigger data: TriggerTool
+
+  unsigned int passed_l1;
+  unsigned int passed_hlt;
+
+};
+
+#endif
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/cmt/Makefile.RootCore b/Trigger/TrigValidation/TrigAnalysisTest/cmt/Makefile.RootCore
new file mode 100644
index 00000000000..bc90333ada2
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/cmt/Makefile.RootCore
@@ -0,0 +1,58 @@
+# this makefile also gets parsed by shell scripts
+# therefore it does not support full make syntax and features
+# edit with care
+
+# for full documentation check:
+# https://twiki.cern.ch/twiki/bin/viewauth/Atlas/RootCore#Package_Makefile
+
+
+# the name of the package:
+PACKAGE              = TrigAnalysisTest
+
+# the libraries to link with this one:
+PACKAGE_PRELOAD      = 
+
+# additional compilation flags to pass (not propagated to dependent packages):
+PACKAGE_CXXFLAGS     = 
+
+# additional compilation flags to pass (propagated to dependent packages):
+PACKAGE_OBJFLAGS     = 
+
+# additional linker flags to pass (for compiling the library):
+PACKAGE_LDFLAGS      = 
+
+# additional linker flags to pass (for compiling binaries):
+PACKAGE_BINFLAGS     = 
+
+# additional linker flags to pass (propagated to client libraries):
+PACKAGE_LIBFLAGS     = 
+
+# the list of packages we depend on:
+PACKAGE_DEP          = xAODRootAccess TrigConfxAOD TrigDecisionTool
+
+# the list of packages we use if present, but that we can work without :
+PACKAGE_TRYDEP       = 
+
+# list pattern of scripts to link directly into binary path:
+PACKAGE_SCRIPTS      = 
+
+# whether to use pedantic compilation:
+PACKAGE_PEDANTIC     = 1
+
+# whether to turn *off* optimization (set to dict to do it only for
+# dictionaries):
+PACKAGE_NOOPT        = 0
+
+# whether to build no library (needs to be set if no source files are
+# present):
+PACKAGE_NOCC         = 1
+
+# whether we build a reflex dictionary:
+PACKAGE_REFLEX       = 0
+
+# the list of all unit tests that should be called in recursive testing,
+# i.e. in unit tests that call other unit tests
+# for that unit tests need to pass on all machines, and run very fast
+PACKAGE_RECURSIVE_UT = 
+
+include $(ROOTCOREDIR)/Makefile-common
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/cmt/requirements b/Trigger/TrigValidation/TrigAnalysisTest/cmt/requirements
index 1b394daad91..29cb0ecbf89 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/cmt/requirements
+++ b/Trigger/TrigValidation/TrigAnalysisTest/cmt/requirements
@@ -17,6 +17,9 @@ use AtlasTriggerRunTime     AtlasTriggerRunTime-*
 #use AtlasAnalysisRunTime 	AtlasAnalysisRunTime-*
 #use RunTimeTester          RunTimeTester-* Tools
 use TestPolicy              TestPolicy-*
+use  AthenaBaseComps		AthenaBaseComps-*		Control
+use GaudiInterface     GaudiInterface-*
+use TrigDecisionTool   TrigDecisionTool-*	Trigger/TrigAnalysis
 
 
 apply_pattern declare_python_modules files="../python/__init__.py ../python/PassedTriggerFilter.py"
@@ -27,7 +30,8 @@ apply_pattern declare_joboptions files="*.py"
 #RTT declarations
 apply_pattern declare_scripts files="../Testing/*.sh ../bin/*.py"
 
-apply_pattern declare_runtime extras="../test/TrigAnalysisTest_TestConfiguration.xml \
+apply_pattern declare_runtime extras="../test/*.xml \
+                                      ../share/*py \
                                       ../Testing/*.conf \
                                       ../bin/RttScriptRunner_TrigAnalysisTest.py \ 
                                       ../bin/CheckLog_TrigAnalysisTest.py \
@@ -41,5 +45,7 @@ private
 apply_pattern validate_xml
 public
 
-macro TrigAnalysisTest_TestConfiguration "../test/TrigAnalysisTest_TestConfiguration.xml"
+apply_pattern dual_use_library files="../Root/*.cxx ../src/*.cxx"
+macro TrigAnalysisTest_TestConfiguration "../test/TrigAnalysisTest_TestConfiguration.xml"  AthAnalysisBase "../test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml"
+
 
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/TriggersFiredTest_jobOptions.py b/Trigger/TrigValidation/TrigAnalysisTest/share/TriggersFiredTest_jobOptions.py
new file mode 100644
index 00000000000..f797d2ecccd
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/TriggersFiredTest_jobOptions.py
@@ -0,0 +1,9 @@
+#Skeleton joboption for a simple analysis job
+
+theApp.EvtMax=100                                         #says how many events to run over. Set to -1 for all events
+
+import AthenaPoolCnvSvc.ReadAthenaPool                   #sets up reading of POOL files (e.g. xAODs)
+svcMgr.EventSelector.InputCollections=["/afs/cern.ch/user/a/asgbase/patspace/xAODs/r6630/mc15_13TeV.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.recon.AOD.e3698_s2608_s2183_r6630_tid05352803_00/AOD.05352803._000242.pool.root.1"]   #insert your list of input files here
+
+algseq = CfgMgr.AthSequencer("AthAlgSeq")                #gets the main AthSequencer
+algseq += CfgMgr.TriggersFiredTest()                               #adds an instance of your alg to it
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigESD_HLTMonitoring.py b/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigESD_HLTMonitoring.py
index 902e240f0c4..bd7c23ba881 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigESD_HLTMonitoring.py
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigESD_HLTMonitoring.py
@@ -87,9 +87,6 @@ HLTMonManager.AthenaMonTools += HLTMETMonitoringTool()
 from TrigTauMonitoring.TrigTauMonitoringConfig import TrigTauMonitoringTool
 HLTMonManager.AthenaMonTools += TrigTauMonitoringTool()
 
-from TrigJetMonitoring.TrigJetMonitoringConfig import TrigJetMonitoringTool
-HLTMonManager.AthenaMonTools += TrigJetMonitoringTool()
-
 from TrigBjetMonitoring.TrigBjetMonitoringConfig import TrigBjetMonitoringConfig
 HLTMonManager.AthenaMonTools += TrigBjetMonitoringConfig()
 
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/src/TriggersFiredTest.cxx b/Trigger/TrigValidation/TrigAnalysisTest/src/TriggersFiredTest.cxx
new file mode 100755
index 00000000000..c349141e075
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/src/TriggersFiredTest.cxx
@@ -0,0 +1,100 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/** J.Montejo - 15/10/2015 - tests for TrigDecisionTool **/
+
+#include "TrigAnalysisTest/TriggersFiredTest.h"
+
+#include <cmath>
+#include <algorithm>
+#include <iostream>
+#include <iomanip>
+
+TriggersFiredTest::TriggersFiredTest(const std::string &name, ISvcLocator *pSvcLocator)
+: AthAlgorithm(name, pSvcLocator),
+  m_first_event(true),
+  //m_configHandle( "TrigConf::xAODConfigTool/xAODConfigTool"),
+  m_trigDec("Trig::TrigDecisionTool/TrigDecisionTool")
+{
+    declareProperty("TestList",       m_TestList, "Test list");
+}
+
+
+TriggersFiredTest::~TriggersFiredTest() {}
+
+StatusCode TriggersFiredTest::initialize()
+{
+    // reset event counters
+    m_first_event=true;
+    
+    // print out properties
+    msg(MSG::INFO) << "Initializing TriggersFiredTest ..." << endreq;
+    
+    // get handle to trigger configuration
+    //ToolHandle<TrigConf::ITrigConfigTool> configHandle(&m_configTool);
+    //StatusCode sc = m_configHandle.retrieve();
+    //if ( sc.isFailure() ) {
+    //    msg(MSG::ERROR) << "Could not retrieve TrigDecisionTool!" << endreq;
+    //    return sc;
+    //}
+		//sc = m_configHandle->initialize();
+    
+    // get handle to TrigDecisionTool
+    //sc = m_trigDec.retrieve();
+    StatusCode sc = m_trigDec.retrieve();
+    if ( sc.isFailure() ) {
+        msg(MSG::ERROR) << "Could not retrieve TrigDecisionTool!" << endreq;
+        return sc;
+    }
+    //m_trigDec->ExperimentalAndExpertMethods()->enable();
+		//sc = m_trigDec->setProperty("ConfigTool",m_configHandle);
+		//sc = m_trigDec->setProperty("TrigDecisionKey","xTrigDecision");
+    //if ( sc.isFailure() ) {
+    //    msg(MSG::ERROR) << "Some problem!" << endreq;
+    //    return sc;
+    //}
+    
+    msg(MSG::INFO) << "Initialization successful" << endreq;
+    
+    return StatusCode::SUCCESS;
+}
+
+
+StatusCode TriggersFiredTest::finalize()
+{
+    
+    // print summary of trigger decisions for each level
+    msg(MSG::INFO) << "==========================================================" << endreq;
+    msg(MSG::INFO) << "TriggersFiredTest summary:" << endreq;
+    msg(MSG::INFO) << "==========================================================" << endreq;
+    
+    
+    // print out nr. of events passed in blocks of N events for specific chains (configurable)
+    //msg(MSG::INFO) << "REGTEST  Nr.events: ";
+    
+    msg(MSG::INFO) << "Finalised successfully" << endreq;
+    
+    return StatusCode::SUCCESS;
+}
+
+StatusCode TriggersFiredTest::execute()
+{
+    
+    msg(MSG::INFO) << "TriggersFiredTest::execute" << endreq;
+    
+		passed_l1 += m_trigDec->isPassed("L1_.*");
+		passed_hlt += m_trigDec->isPassed("HLT_.*");
+    
+    // Full print of first event
+    if (m_first_event){
+			m_first_event = false;
+		  auto chainGroups = m_trigDec->getChainGroup(".*");
+  			for(auto &trig : chainGroups->getListOfTriggers()) {
+    		msg(MSG::INFO) << "  " << trig << " " << m_trigDec->isPassed(trig) << endreq;
+  		}
+		}
+    
+    return StatusCode::SUCCESS;
+}
+
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_entries.cxx b/Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_entries.cxx
new file mode 100644
index 00000000000..f51100d47ff
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_entries.cxx
@@ -0,0 +1,12 @@
+/** J.Montejo 15/10/2015 */
+
+#include "GaudiKernel/DeclareFactoryEntries.h"
+
+//derived algorithm classes
+#include "TrigAnalysisTest/TriggersFiredTest.h"
+
+DECLARE_ALGORITHM_FACTORY( TriggersFiredTest )
+
+DECLARE_FACTORY_ENTRIES( TrigAnalysisTest ) {
+  DECLARE_ALGORITHM( TriggersFiredTest );
+}
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_load.cxx b/Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_load.cxx
new file mode 100644
index 00000000000..a2ab023d9b1
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/src/components/TrigAnalysisTest_load.cxx
@@ -0,0 +1,5 @@
+/** J.Montejo 15/10/2015 **/
+
+#include "GaudiKernel/LoadFactoryEntries.h"
+
+LOAD_FACTORY_ENTRIES(TrigAnalysisTest)
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml
new file mode 100755
index 00000000000..fe4604d041a
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_AthAnalysisBaseTestConfiguration.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?> 
+<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd"> 
+<!-- NB validate this file here before committing to svn:
+ python /afs/cern.ch/user/r/rtt/public/xmlvalidate.py TrigAnalysisTest_TestConfiguration.xml
+ -->
+<unifiedTestConfiguration>
+    
+	<atn>
+	   <TEST name="TriggersFired_atn" type="athena" suite="TriggerDecisionToolTest">
+	      <options_atn>TrigAnalysisTest/TriggersFiredTest_jobOptions.py</options_atn>
+	      <timelimit>30</timelimit>
+	      <author>Javier Montejo</author>
+	      <mailto>jmontejo@cern.ch</mailto>
+	      <expectations>
+	         <errorMessage>FAILURE </errorMessage>
+	         <returnValue>0</returnValue>
+	      </expectations>
+	   </TEST>
+	</atn>
+
+</unifiedTestConfiguration>
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml
index 4302617f3be..05eb4cd2949 100755
--- a/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/TrigAnalysisTest_TestConfiguration.xml
@@ -8,10 +8,11 @@
     <!-- ATN tests configured here -->
     <atn>
         <!-- always KEEP this one --> 
-        <TEST name="AthenaTrigRDOtoESDAOD" type="script" suite="triganalysis_val_RDOtoESDAOD"> 
+        <TEST name="AthenaTrigRDOtoESDAOD" type="script" suite="tat_RDOtoESDAOD"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD --run AthenaTrigRDOtoESDAOD --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -19,10 +20,11 @@
         </TEST> 
         
         
-        <TEST name="AthenaTrigESD_HLTMonitoring" type="script" suite="triganalysis_val_RDOtoESDAOD"> 
+        <TEST name="AthenaTrigESD_HLTMonitoring" type="script" suite="tat_RDOtoESDAOD"> 
             <options_atn>trigtest.pl --test AthenaTrigESD_HLTMonitoring --run AthenaTrigESD_HLTMonitoring --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -30,64 +32,70 @@
         </TEST> 
         
         
-        <TEST name="AthenaTrigRDOtoBS" type="script" suite="triganalysis_val_BS"> 
+        <TEST name="AthenaTrigRDOtoBS" type="script" suite="tat_BS"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoBS --run AthenaTrigRDOtoBS --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <TEST name="AthenaTrigBStoESD" type="script" suite="triganalysis_val_BS"> 
+        <TEST name="AthenaTrigBStoESD" type="script" suite="tat_BS"> 
             <options_atn>trigtest.pl --test AthenaTrigBStoESD --run AthenaTrigBStoESD --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <!--TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="triganalysis_val_BS_MC"-->         
-        <TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="triganalysis_val_BS"> 
+        <!--TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="tat_BS_MC"-->         
+        <TEST name="AthenaTrigRDOtoBS_MC" type="script" suite="tat_BS"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoBS_MC --run AthenaTrigRDOtoBS_MC --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <!--TEST name="AthenaTrigBStoESD_MC" type="script" suite="triganalysis_val_BS_MC"--> 
-        <TEST name="AthenaTrigBStoESD_MC" type="script" suite="triganalysis_val_BS"> 
+        <!--TEST name="AthenaTrigBStoESD_MC" type="script" suite="tat_BS_MC"--> 
+        <TEST name="AthenaTrigBStoESD_MC" type="script" suite="tat_BS"> 
             <options_atn>trigtest.pl --test AthenaTrigBStoESD_MC --run AthenaTrigBStoESD_MC --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <!--TEST name="MC_standalone" type="script" suite="triganalysis_val_BS_MC"--> 
-        <TEST name="MC_standalone" type="script" suite="triganalysis_val_BS"> 
-            <options_atn>trigtest.pl --test MC_standalone --run MC_standalone --conf TrigAnalysisTest.conf</options_atn> 
+        <!--TEST name="MC_standalone" type="script" suite="tat_BS_MC"--> 
+        <!--TEST name="MC_standalone" type="script" suite="tat_BS"> 
+            <options_atn>trigtest.pl - -test MC_standalone - -run MC_standalone - -conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
-        </TEST> 
+        </TEST--> 
         
-        <!--TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="triganalysis_val_Phys_EA"--> 
-        <TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="triganalysis_val_EA"> 
+        <!--TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="tat_Phys_EA"--> 
+        <TEST name="AthenaTrigRDOtoESDAOD_Physics" type="script" suite="tat_EA"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_Physics --run AthenaTrigRDOtoESDAOD_Physics --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -95,32 +103,35 @@
         </TEST> 
         
         
-        <!--TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="triganalysis_val_MC_EA"--> 
-        <TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="triganalysis_val_EA"> 
+        <!--TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="tat_MC_EA"--> 
+        <TEST name="AthenaTrigRDOtoESDAOD_MC" type="script" suite="tat_EA"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoESDAOD_MC --run AthenaTrigRDOtoESDAOD_MC --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <TEST name="AthenaTrigRDOtoTAG" type="script" suite="triganalysis_val_tag"> 
+        <TEST name="AthenaTrigRDOtoTAG" type="script" suite="tat_tag"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoTAG --run AthenaTrigRDOtoTAG --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <!--TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="triganalysis_val_AOD_Phys"--> 
-        <TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="triganalysis_val_AOD"> 
+        <!--TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="tat_AOD_Phys"--> 
+        <TEST name="AthenaTrigRDOtoAOD_Physics" type="script" suite="tat_AOD"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_Physics --run AthenaTrigRDOtoAOD_Physics --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -128,21 +139,23 @@
         </TEST> 
         
         
-        <TEST name="AthenaTrigRDOtoAOD" type="script" suite="triganalysis_val_AOD"> 
+        <TEST name="AthenaTrigRDOtoAOD" type="script" suite="tat_AOD"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD --run AthenaTrigRDOtoAOD --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <!--TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="triganalysis_val_AOD_SLIM"--> 
-        <TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="triganalysis_val_AOD"> 
+        <!--TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="tat_AOD_SLIM"--> 
+        <TEST name="AthenaTrigRDOtoAOD_SLIM" type="script" suite="tat_AOD"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_SLIM --run AthenaTrigRDOtoAOD_SLIM --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -150,32 +163,35 @@
         </TEST> 
 
 
-        <!--TEST name="AthenaTrigRDO_TDT" type="script" suite="triganalysis_val_TDT"-->
-        <TEST name="AthenaTrigRDO_TDT" type="script" suite="triganalysis_val_EA">  
+        <!--TEST name="AthenaTrigRDO_TDT" type="script" suite="tat_TDT"-->
+        <TEST name="AthenaTrigRDO_TDT" type="script" suite="tat_EA">  
             <options_atn>trigtest.pl --test AthenaTrigRDO_TDT --run AthenaTrigRDO_TDT --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <TEST name="AthenaTrigRDOtoAOD_MC" type="script" suite="triganalysis_val_MC_Slim"> 
+        <TEST name="AthenaTrigRDOtoAOD_MC" type="script" suite="tat_MC_Slim"> 
             <options_atn>trigtest.pl --test AthenaTrigRDOtoAOD_MC --run AthenaTrigRDOtoAOD_MC --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <TEST name= "AthenaTrigAODtoAOD_TrigNavSlimming" type="script" suite="triganalysis_val_MC_Slim"> 
+        <TEST name= "AthenaTrigAODtoAOD_TrigNavSlimming" type="script" suite="tat_MC_Slim"> 
             <options_atn>trigtest.pl --test AthenaTrigAODtoAOD_TrigNavSlimming --run AthenaTrigAODtoAOD_TrigNavSlimming --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
             <mailto> tbold@mail.cern.ch</mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -183,41 +199,69 @@
         </TEST> 
         
         
-        <TEST name="AthenaTrigAOD_TrigEDMCheck" type="script" suite="triganalysis_val_MC_Slim"> 
+        <TEST name="AthenaTrigAOD_TrigEDMCheck" type="script" suite="tat_MC_Slim"> 
             <options_atn>trigtest.pl --test AthenaTrigAOD_TrigEDMCheck --run AthenaTrigAOD_TrigEDMCheck --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>30</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
+            <expectations> 
+                <errorMessage>FAILURE </errorMessage> 
+                <returnValue>0</returnValue> 
+            </expectations> 
+        </TEST> 
+        
+        <TEST name="AthenaTrigAOD_TrigDecTool" type="script" suite="tat_MC_Slim"> 
+            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigDecTool --run AthenaTrigAOD_TrigDecTool --conf TrigAnalysisTest.conf</options_atn> 
+            <timelimit>30</timelimit> 
+            <author>TrigAnalysis validation</author> 
+            <project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <TEST name="PhysValMonitoring" type="script" suite="triganalysis_val_MC_Slim"> 
+        <TEST name="PhysValMonitoring" type="script" suite="tat_PhysVal"> 
             <options_atn>trigtest.pl --test PhysValMonitoring --run PhysValMonitoring --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>45</timelimit> 
+            <timelimit>60</timelimit> 
             <author>TrigAnalysis validation</author> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
-        <TEST name="AthenaTrigAOD_TrigDecTool" type="script" suite="triganalysis_val_MC_Slim"> 
-            <options_atn>trigtest.pl --test AthenaTrigAOD_TrigDecTool --run AthenaTrigAOD_TrigDecTool --conf TrigAnalysisTest.conf</options_atn> 
-            <timelimit>30</timelimit> 
+        <TEST name="PhysValMonitoringDataESD" type="script" suite="tat_PhysVal"> 
+            <options_atn>trigtest.pl --test PhysValMonitoringDataESD --run PhysValMonitoringDataESD --conf TrigAnalysisTest.conf</options_atn> 
+            <timelimit>60</timelimit> 
+            <author>TrigAnalysis validation</author> 
+            <project_exclude>AthAnalysisBase</project_exclude>
+            <expectations> 
+                <errorMessage>FAILURE </errorMessage> 
+                <returnValue>0</returnValue> 
+            </expectations> 
+        </TEST> 
+        
+        <TEST name="MonitoringDataAOD" type="script" suite="tat_PhysVal"> 
+            <options_atn>trigtest.pl --test MonitoringDataAOD --run MonitoringDataAOD --conf TrigAnalysisTest.conf</options_atn> 
+            <timelimit>60</timelimit> 
             <author>TrigAnalysis validation</author> 
+            <project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
             </expectations> 
         </TEST> 
         
+
+        
         <!--TEST name= "AthenaTrigAOD_TrigSlimValidation" type="script" suite="triganalysis_val"> 
          <options_atn>trigtest.pl - -test AthenaTrigAOD_TrigSlimValidation - -run AthenaTrigAOD_TrigSlimValidation - -conf TrigAnalysisTest.conf</options_atn> 
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> Benjamin.Smith@cern.ch</mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -229,6 +273,7 @@
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> Benjamin.Smith@cern.ch</mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -240,6 +285,7 @@
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> Benjamin.Smith@cern.ch</mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -251,6 +297,7 @@
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> Benjamin.Smith@cern.ch</mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -262,6 +309,7 @@
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> Benjamin.Smith@cern.ch</mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -275,17 +323,19 @@
          <timelimit>45</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> p.f.salvatore@sussex.ac.uk </mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
          </expectations> 
          </TEST--> 
         
-        <TEST name= "BackCompAthenaTrigBStoESDAOD" type="script" suite="triganalysis_val_BackComp"> 
+        <TEST name= "BackCompAthenaTrigBStoESDAOD" type="script" suite="tat_BackComp"> 
             <options_atn>trigtest.pl --test BackCompAthenaTrigBStoESDAOD --run BackCompAthenaTrigBStoESDAOD --conf TrigAnalysisTest.conf</options_atn> 
             <timelimit>45</timelimit> 
             <author>TrigAnalysis validation</author> 
             <mailto> p.f.salvatore@sussex.ac.uk </mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations> 
                 <errorMessage>FAILURE </errorMessage> 
                 <returnValue>0</returnValue> 
@@ -297,6 +347,7 @@
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> p.f.salvatore@sussex.ac.uk </mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -308,6 +359,7 @@
          <timelimit>30</timelimit> 
          <author>TrigAnalysis validation</author> 
          <mailto> p.f.salvatore@sussex.ac.uk </mailto> 
+	      		<project_exclude>AthAnalysisBase</project_exclude>
          <expectations> 
          <errorMessage>FAILURE </errorMessage> 
          <returnValue>0</returnValue> 
@@ -320,25 +372,27 @@
             <options_atn>atn_timeline.py --atn -p TrigAnalysisTest </options_atn>
             <timelimit>2</timelimit>
             <author>Frank Winklmeier</author>
-            <!--prerequisite>triganalysis_val_RDOtoESDAOD</prerequisite>
-             <prerequisite>triganalysis_val_BS</prerequisite>
-             <prerequisite>triganalysis_val_BS_MC</prerequisite>
-             <prerequisite>triganalysis_val_MC_Slim</prerequisite>
-             <prerequisite>triganalysis_val_BackComp</prerequisite>
-             <prerequisite>triganalysis_val_Phys_EA</prerequisite>
-             <prerequisite>triganalysis_val_MC_EA</prerequisite>
-             <prerequisite>triganalysis_val_tag</prerequisite>
-             <prerequisite>triganalysis_val_AOD_Phys</prerequisite>
-             <prerequisite>triganalysis_val_AOD</prerequisite>
-             <prerequisite>triganalysis_val_AOD_SLIM</prerequisite>
-             <prerequisite>triganalysis_val_TDT</prerequisite-->
-            <prerequisite>triganalysis_val_RDOtoESDAOD</prerequisite>
-            <prerequisite>triganalysis_val_BS</prerequisite>
-            <prerequisite>triganalysis_val_BackComp</prerequisite>
-            <prerequisite>triganalysis_val_EA</prerequisite>            
-            <prerequisite>triganalysis_val_tag</prerequisite>
-            <prerequisite>triganalysis_val_AOD</prerequisite>
-            <prerequisite>triganalysis_val_MC_Slim</prerequisite>
+            <!--prerequisite>tat_RDOtoESDAOD</prerequisite>
+             <prerequisite>tat_BS</prerequisite>
+             <prerequisite>tat_BS_MC</prerequisite>
+             <prerequisite>tat_MC_Slim</prerequisite>
+             <prerequisite>tat_BackComp</prerequisite>
+             <prerequisite>tat_Phys_EA</prerequisite>
+             <prerequisite>tat_MC_EA</prerequisite>
+             <prerequisite>tat_tag</prerequisite>
+             <prerequisite>tat_AOD_Phys</prerequisite>
+             <prerequisite>tat_AOD</prerequisite>
+             <prerequisite>tat_AOD_SLIM</prerequisite>
+             <prerequisite>tat_TDT</prerequisite-->
+            <prerequisite>tat_RDOtoESDAOD</prerequisite>
+            <prerequisite>tat_BS</prerequisite>
+            <prerequisite>tat_BackComp</prerequisite>
+            <prerequisite>tat_EA</prerequisite>            
+            <prerequisite>tat_tag</prerequisite>
+            <prerequisite>tat_AOD</prerequisite>
+            <prerequisite>tat_MC_Slim</prerequisite>
+            <prerequisite>tat_PhysVal</prerequisite>
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations>
                 <returnValue>0</returnValue>
             </expectations>
@@ -349,20 +403,22 @@
             <timelimit>2</timelimit>
             <author>TrigAnalysis validation</author>
             <prerequisite>triganalysis_index0</prerequisite>
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations>
                 <returnValue>0</returnValue>
             </expectations>
         </TEST>
         
-        <TEST name="sendmail2shifter" type="script" suite="triganalysis_index">
+        <!--TEST name="sendmail2shifter" type="script" suite="triganalysis_index">
             <options_atn>echo $ATN_PACKAGE | mail -s "TrigAnalysisTest ATN done" "czodrows@cern.ch" </options_atn>
             <timelimit>2</timelimit>
             <author>TrigAnalysis validation</author>
             <prerequisite>triganalysis_index0</prerequisite>
+	      		<project_exclude>AthAnalysisBase</project_exclude>
             <expectations>
                 <returnValue>0</returnValue>
-            </expectations>
-        </TEST>
+            </expectations
+        </TEST-->
         
     </atn>
     
@@ -634,281 +690,7 @@
                 <queue>long</queue> 
                 <alwaysRunPostProc />  
             </athena>
-            
-            
-            <chain>
-                <chainName>Validation_Trig_and_Reco_Split_chain</chainName>
-                <abortOnError />
-                
-                <sequential>
-                    <parallel>
-                        
-                        <sequential>
-                            
-                            <chainElement>
-                                <jobTransform userJobId="Split" >
-                                    <doc>
-                                        Reco_tf.py split activated
-                                    </doc>
-                                    <jobTransformJobName>Split</jobTransformJobName>
-                                    <jobTransformCmd>
-                                        Reco_tf.py --athenaopts=--stdcmalloc --inputRDOFile /afs/cern.ch/work/g/graemes/ddm/pmb/RDO.01177879._000004.pool.root.2 --outputRDO_TRIGFile tmp.RDO_TRIG --outputAODFile Split.AOD.pool.root --maxEvents 500 --autoConfiguration everything --preExec "TriggerFlags.enableMonitoring = ['Online']" --steering RAWtoESD:in-RDO RAWtoESD:in-BS RAWtoESD:in+RDO_TRIG --conditionsTag="OFLCOND-RUN12-SDR-22" ; rm -f tmp.* ; for i in ntuple*.gz; do perfmon.py -f 0.90 $i ; done
-                                    </jobTransformCmd>
-                                    <group>TrigAnalysisTestIOTests</group>
-                                    <queue>long</queue>
-                                    <testToRemove>
-                                        <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                        <testidentifier>PerfMonRunner</testidentifier>
-                                    </testToRemove>
-                                    <alwaysRunPostProc />
-                                </jobTransform>
-                                <chainfileout>Split.AOD.pool.root</chainfileout>
-                            </chainElement>
-                            
-                            
-                            <!--chainElement>
-                             <athena userJobId="Split_TDT">
-                             <doc> AthenaTrigAOD_TrigDecTool on Split AOD </doc>
-                             <displayName>Split_TDT</displayName>
-                             <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["Split.AOD.pool.root"]</commandLineFlags>
-                             <options>testAthenaTrigAOD_TrigDecTool.py</options>
-                             <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                             <group>TrigAnalysisTestIOTests</group>
-                             <queue>long</queue> 
-                             <chaindataset_info>
-                             <dc2/>
-                             <chaindatasetName>Split.AOD.pool.root</chaindatasetName>
-                             <dataset_info>
-                             <dc2 />
-                             <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                             </dataset_info>
-                             </chaindataset_info>
-                             </athena>
-                             <chainfileout>Split.xml</chainfileout>
-                             </chainElement-->
-                            
-                            
-                            
-                        </sequential>
-                        
-                        
-                        <!--sequential>
-                         <chainElement>
-                         <jobTransform userJobId="Split_compare" >
-                         <doc>
-                         Reco_tf.py comp split vs nonsplit
-                         </doc>
-                         <jobTransformJobName>Split</jobTransformJobName>
-                         <jobTransformCmd>
-                         Reco_tf.py - -inputRDOFile /afs/cern.ch/work/g/graemes/ddm/pmb/RDO.01177879._000004.pool.root.2 - -outputRDO_TRIGFile tmp.RDO_TRIG - -outputAODFile Split.AOD.pool.root - -maxEvents 250 - -autoConfiguration everything - -preExec "TriggerFlags.enableMonitoring = ['Online']" - -steering RAWtoESD:in-RDO RAWtoESD:in-BS RAWtoESD:in+RDO_TRIG - -conditionsTag="OFLCOND-RUN12-SDR-22" ; rm -f tmp.* ; Reco_tf.py - -inputRDOFile /afs/cern.ch/work/g/graemes/ddm/pmb/RDO.01177879._000004.pool.root.2 - -outputAODFile noSplit.AOD.pool.root - -maxEvents 250 - -autoConfiguration everything - -preExec "TriggerFlags.enableMonitoring = ['Online']" - -conditionsTag="OFLCOND-RUN12-SDR-22" ; rm -f tmp.* ; cp /afs/cern.ch/user/c/czodrows/public/testTDT.py ./ ; athena.py -c'fileList=["Split.AOD.pool.root"]' testTDT.py ; mv trigger_counts.xml Split.xml ; athena.py -c'fileList=["noSplit.AOD.pool.root"]' testTDT.py ; mv trigger_counts.xml noSplit.xml ; python /afs/cern.ch/user/c/czodrows/public/rogercounts/counts/countable.py -f html -o splitcheck.html Split.xml noSplit.xml ; python /afs/cern.ch/user/c/czodrows/public/rogercounts/counts/countable.py -f text -o splitcheck.txt Split.xml noSplit.xml
-                         </jobTransformCmd>
-                         <group>TrigAnalysisTestIOTests</group>
-                         <queue>long</queue>
-                         <testToRemove>
-                         <jobGroupName>TriggerTestMonitorHistos</jobGroupName>
-                         <testidentifier>PerfMonRunner</testidentifier>
-                         </testToRemove>
-                         <alwaysRunPostProc />
-                         </jobTransform>
-                         
-                         </chainElement> 
-                         </sequential-->
-                        
-                        <sequential>
-                            
-                            <chainElement>
-                                <jobTransform userJobId="noSplit" >
-                                    <doc>
-                                        Reco_tf.py noSplit 
-                                    </doc>
-                                    <jobTransformJobName>noSplit</jobTransformJobName>
-                                    <jobTransformCmd>
-                                        Reco_tf.py --inputRDOFile /afs/cern.ch/work/g/graemes/ddm/pmb/RDO.01177879._000004.pool.root.2 --outputAODFile noSplit.AOD.pool.root --maxEvents 500 --autoConfiguration everything --preExec "TriggerFlags.enableMonitoring = ['Online']" --conditionsTag="OFLCOND-RUN12-SDR-22" ; rm -f tmp.* ; for i in ntuple*.gz; do perfmon.py -f 0.90 $i ; done
-                                    </jobTransformCmd>
-                                    <group>TrigAnalysisTestIOTests</group>
-                                    <queue>long</queue>
-                                    <testToRemove>
-                                        <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                        <testidentifier>PerfMonRunner</testidentifier>
-                                    </testToRemove>
-                                    <alwaysRunPostProc />
-                                </jobTransform>
-                                <chainfileout>noSplit.AOD.pool.root</chainfileout>
-                            </chainElement>
-                            
-                            
-                            <!--chainElement>
-                             <athena userJobId="noSplit_TDT">
-                             <doc> AthenaTrigAOD_TrigDecTool on Split AOD </doc>
-                             <displayName>Split_TDT</displayName>
-                             <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["Split.AOD.pool.root"]</commandLineFlags>
-                             <options>testAthenaTrigAOD_TrigDecTool.py</options>
-                             <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                             <group>TrigAnalysisTestIOTests</group>
-                             <queue>long</queue> 
-                             <chaindataset_info>
-                             <dc2/>
-                             <chaindatasetName>Split.AOD.pool.root</chaindatasetName>
-                             <dataset_info>
-                             <dc2 />
-                             <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                             </dataset_info>
-                             </chaindataset_info>
-                             <testToRemove>
-                             <jobGroupName>RTT:Top</jobGroupName>
-                             <testidentifier>CheckFileRunner0</testidentifier>
-                             </testToRemove>
-                             </athena>
-                             <chainfileout>noSplit.xml</chainfileout>
-                             </chainElemen-->
-                            
-                            
-                            
-                        </sequential>
-                    </parallel>
-                    
-                    
-                    
-                    
-                    
-                    <!--chainElement>
-                     <jobTransform userJobId="compare_Split_and_noSplit" >
-                     <doc>
-                     compare_Split_and_noSplit
-                     </doc>
-                     <jobTransformJobName>compare_Split_and_noSplit</jobTransformJobName>
-                     <jobTransformCmd>
-                     mv trigger_counts.xml 
-                     </jobTransformCmd>
-                     <group>TrigAnalysisTestIOTests</group>
-                     <queue>long</queue> 
-                     <chaindataset_info>
-                     <dc2/>
-                     <chaindatasetName>noSplit.xml</chaindatasetName>
-                     <dataset_info>
-                     <dc2 />
-                     <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_noSplit.xml</datasetName>
-                     </dataset_info>
-                     </chaindataset_info>
-                     <chaindataset_info>
-                     <dc2/>
-                     <chaindatasetName>Split.xml</chaindatasetName>
-                     <dataset_info>
-                     <dc2 />
-                     <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_Split.xml</datasetName>
-                     </dataset_info>
-                     </chaindataset_info>
-                     <testToRemove>
-                     <jobGroupName>RTT:Top</jobGroupName>
-                     <testidentifier>CheckFileRunner0</testidentifier>
-                     </testToRemove>
-                     
-                     </jobTransform>
-                     </chainElement-->
-                    
-                    
-                    <!--chainElement>
-                     <athena userJobId="AOD_TrigDecTool_MC_pp_v5">
-                     <doc> AthenaTrigAOD_TrigDecTool on Menu: MC_pp_v5 Sample: top AOD from RDO</doc>
-                     <displayName>AthenaTrigAOD_TrigDecTool_MC_pp_v5</displayName>
-                     <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-                     <options>testAthenaTrigAOD_TrigDecTool.py</options>
-                     <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-                     <group>TrigAnalysisTestIOTests</group>
-                     <queue>long</queue> 
-                     <chaindataset_info>
-                     <dc2/>
-                     <chaindatasetName>AOD.pool.root</chaindatasetName>
-                     <dataset_info>
-                     <dc2 />
-                     <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-                     </dataset_info>
-                     </chaindataset_info>
-                     <testToRemove>
-                     <jobGroupName>RTT:Top</jobGroupName>
-                     <testidentifier>CheckFileRunner0</testidentifier>
-                     </testToRemove>
-                     </athena>
-                     </chainElement-->
-                    
-                    
-                    
-                </sequential>
-            </chain>
-            
-            
-            
-            <!--chain>
-             <chainName>AthenaTrigAOD_TrigEDMandTDTCheck_Physics_pp_v5_chain</chainName>
-             <abortOnError />
-             <sequential>
-             
-             <chainElement>
-             <athena userJobId="RDOtoAOD_Physics_pp_v5" doMonitoring="True">
-             <doc> Menu: Physics_pp_v5 Sample: top - produces AOD 100 events</doc>
-             <displayName>RDOtoAOD_Physics_pp_v5</displayName>
-             <commandLineFlags>
-             RunningRTT=TRUE;menu='Physics_pp_v5';jp.AthenaCommonFlags.EvtMax.set_Value_and_Lock(100);jp.Rec.OutputLevel=WARNING;LVL1OutputLevel=WARNING;HLTOutputLevel=WARNING;dsName='/eos/atlas/atlascerngroupdisk/trig-daq/validation/test_data/mc12_8TeV.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.digit.RDO.e1513_s1499_s1504_d700_tid01177880_00';fileRange=[1,20]
-             </commandLineFlags>
-             <options>testAthenaTrigRDOtoAOD.py</options>
-             <group>TrigAnalysisTestIOTests</group>
-             <queue>long</queue>
-             <athenaCommonFlags />
-             </athena>
-             <chainfileout>AOD.pool.root</chainfileout>
-             </chainElement>
-             <parallel>
-             <chainElement>
-             <athena userJobId="AOD_TrigEDMCheck_Physics_pp_v5">
-             <doc> AthenaTrigAOD_TrigEDMCheck on Menu: Physics_pp_v5 Sample: top AOD from RDO</doc>
-             <displayName>AthenaTrigAOD_TrigEDMCheck_Physics_pp_v5</displayName>
-             <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-             <options>testAthenaTrigAOD_TrigEDMCheck.py</options>
-             <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-             <group>TrigAnalysisTestIOTests</group>
-             <queue>long</queue> 
-             <chaindataset_info>
-             <dc2/>
-             <chaindatasetName>AOD.pool.root</chaindatasetName>
-             <dataset_info>
-             <dc2 />
-             <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-             </dataset_info>
-             </chaindataset_info>
-             <testToRemove>
-             <jobGroupName>RTT:Top</jobGroupName>
-             <testidentifier>CheckFileRunner0</testidentifier>
-             </testToRemove>
-             </athena>
-             </chainElement>
-             
-             <chainElement>
-             <athena userJobId="AOD_TrigDecTool_Physics_pp_v5">
-             <doc> AthenaTrigAOD_TrigDecTool on Menu: Physics_pp_v5 Sample: top AOD from RDO</doc>
-             <displayName>AthenaTrigAOD_TrigDecTool_Physics_pp_v5</displayName>
-             <commandLineFlags>RunningRTT=TRUE;jp.AthenaCommonFlags.PoolAODInput=["AOD.pool.root"]</commandLineFlags>
-             <options>testAthenaTrigAOD_TrigDecTool.py</options>
-             <package>Trigger/TrigValidation/TrigAnalysisTest</package> 
-             <group>TrigAnalysisTestIOTests</group>
-             <queue>long</queue> 
-             <chaindataset_info>
-             <dc2/>
-             <chaindatasetName>AOD.pool.root</chaindatasetName>
-             <dataset_info>
-             <dc2 />
-             <datasetName>/afs/cern.ch/atlas/project/RTT/prod/Results/rtt/chainstore/devval/x86_64-slc6-gcc47-opt/AtlasProduction/Trigger/TrigValidation/TrigAnalysisTest/AthenaTrigAOD_TrigEDMandTDTCheck_chain/file_link_broken_on_purpose_to_spot_RTT_errors_AOD.pool.root</datasetName>
-             </dataset_info>
-             </chaindataset_info>
-             <testToRemove>
-             <jobGroupName>RTT:Top</jobGroupName>
-             <testidentifier>CheckFileRunner0</testidentifier>
-             </testToRemove>
-             </athena>
-             </chainElement>
-             </parallel>
-             </sequential>
-             </chain-->
-            
+
             <chain>
                 <chainName>AthenaTrigAOD_TrigEDMandTDTCheck_MC_pp_v5_chain</chainName>
                 <abortOnError />
@@ -952,8 +734,8 @@
                                     <testidentifier>CheckFileRunner0</testidentifier>
                                 </testToRemove>
                                 <testToRemove>
-                                    <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump_chainDump</testidentifier>
+                                    <jobGroupName>TrigAnalysisTest:TrigAnalysisTestIOTests</jobGroupName>
+                                    <testidentifier>chainDump</testidentifier>
                                 </testToRemove>
                             </athena>
                         </chainElement>
@@ -980,8 +762,8 @@
                                     <testidentifier>CheckFileRunner0</testidentifier>
                                 </testToRemove>
                                 <testToRemove>
-                                    <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump_chainDump</testidentifier>
+                                    <jobGroupName>TrigAnalysisTest:TrigAnalysisTestIOTests</jobGroupName>
+                                    <testidentifier>chainDump</testidentifier>
                                 </testToRemove>
                             </athena>
                         </chainElement>
@@ -990,11 +772,6 @@
                 </sequential>
             </chain>
             
-            
-            
-            
-            
-            
             <chain>
                 <chainName>AthenaTrigESDAOD_Perf_and_HLTMons_MC_pp_v5_chain</chainName>
                 <abortOnError />
@@ -1056,8 +833,8 @@
                                     <testidentifier>CheckFileRunner0</testidentifier>
                                 </testToRemove>
                                 <testToRemove>
-                                    <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump_chainDump</testidentifier>
+                                    <jobGroupName>TrigAnalysisTest:TrigAnalysisTestIOTests</jobGroupName>
+                                    <testidentifier>chainDump</testidentifier>
                                 </testToRemove>
                             </athena>
                         </chainElement>
@@ -1085,8 +862,8 @@
                                     <testidentifier>CheckFileRunner0</testidentifier>
                                 </testToRemove>
                                 <testToRemove>
-                                    <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump_chainDump</testidentifier>
+                                    <jobGroupName>TrigAnalysisTest:TrigAnalysisTestIOTests</jobGroupName>
+                                    <testidentifier>chainDump</testidentifier>
                                 </testToRemove>
                             </athena>
                         </chainElement>
@@ -1115,13 +892,13 @@
                                     <testidentifier>CheckFileRunner0</testidentifier>
                                 </testToRemove>
                                 <testToRemove>
-                                    <jobGroupName>TrigAnalysisTestIOTests</jobGroupName>
-                                    <testidentifier>chainDump_chainDump</testidentifier>
+                                    <jobGroupName>TrigAnalysisTest:TrigAnalysisTestIOTests</jobGroupName>
+                                    <testidentifier>chainDump</testidentifier>
                                 </testToRemove>
                             </athena>
                         </chainElement>
                     </parallel>
-                    
+
                 </sequential>
             </chain>
             
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/test/ut_triggers_fired.cxx b/Trigger/TrigValidation/TrigAnalysisTest/test/ut_triggers_fired.cxx
new file mode 100644
index 00000000000..f8a570740c5
--- /dev/null
+++ b/Trigger/TrigValidation/TrigAnalysisTest/test/ut_triggers_fired.cxx
@@ -0,0 +1,98 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// Test to make sure at least some L1 and some HLT triggers have
+// fired.
+
+#include "xAODRootAccess/Init.h"
+#include "xAODRootAccess/tools/ReturnCheck.h"
+
+#include "xAODRootAccess/TEvent.h"
+
+#include "TrigConfxAOD/xAODConfigTool.h"
+#include "TrigDecisionTool/TrigDecisionTool.h"
+
+#include "TChain.h"
+#include "TError.h"
+#include "TFile.h"
+#include "TH1F.h"
+#include "TSystem.h"
+
+#include <iostream>
+
+using namespace std;
+using namespace Trig;
+using namespace TrigConf;
+using namespace xAOD;
+
+// Config
+const char* APP_NAME = "trigDecision";
+
+// Helpers
+void dumpTriggerInfo(TrigDecisionTool &trigDecisionTool);
+
+int main()
+{
+  // Initialize (as done for all xAOD standalone programs!)
+  if (!xAOD::Init(APP_NAME).isSuccess()) {
+    return 1;
+  }
+
+  // Load up the proper file we should be checking against.
+  auto chain = new TChain("CollectionTree");
+  chain->Add(gSystem->Getenv("ROOTCORE_TEST_FILE"));
+
+  // Init data access to the trigger
+  TEvent event(TEvent::kBranchAccess);
+  if (!event.readFrom(chain).isSuccess()) {
+    return 1;
+  }
+
+  xAODConfigTool configTool("xAODConfigTool");
+  ToolHandle<TrigConf::ITrigConfigTool> configHandle(&configTool);
+  configHandle->initialize();
+   
+  TrigDecisionTool trigDecTool("TrigDecTool");
+  trigDecTool.setProperty("ConfigTool",configHandle);
+  trigDecTool.setProperty("TrigDecisionKey","xTrigDecision");
+  trigDecTool.initialize();
+
+  // Counters
+  uint passed_l1 = 0;
+  uint passed_hlt = 0;
+
+  // Run the files
+  size_t nEntries = chain->GetEntries();
+  for (size_t entry = 0; entry < nEntries; entry++) {
+    event.getEntry(entry);
+
+    // Did we pass a trigger level?
+    if (trigDecTool.isPassed("L1_.*"))
+      passed_l1++;
+    if (trigDecTool.isPassed("HLT_.*"))
+      passed_hlt++;
+
+    // Dump for debugging the test
+    if (entry == 1) {
+      dumpTriggerInfo(trigDecTool);
+    }
+  }
+
+  // Dump for debugging.
+  cout << "L1 triggers passed: " << passed_l1 << endl;
+  cout << "HLT triggers passed; " << passed_hlt << endl;
+
+  // Good run if we found a trigger!
+  return (passed_l1 > 0 && passed_hlt > 0) ? 0 : 1;
+}
+
+// Dump out all chains in an event
+void dumpTriggerInfo(TrigDecisionTool &trigDecTool) {
+  cout << "Dumping trigger info for event" << endl;
+  auto chainGroups = trigDecTool.getChainGroup(".*");
+  for(auto &trig : chainGroups->getListOfTriggers()) {
+    cout << "  " << trig << endl;
+  }
+}
+
-- 
GitLab