Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

XANATriggerInfo.cpp

Go to the documentation of this file.
00001 //-------------------------------------------------
00002 // from RunL1GlobalTrigger
00003 //-------------------------------------------------
00004 
00005 #include "Utilities/Configuration/interface/Architecture.h"
00006 #include "Utilities/Notification/interface/PackageInitializer.h"
00007 #include "Utilities/Notification/interface/Observer.h" 
00008 #include "Utilities/Notification/interface/Singleton.h"
00009 
00010 #include "CARF/G3Event/interface/G3EventProxy.h"
00011 
00012 #include "Trigger/L1GlobalTrigger/interface/L1GlobalTrigger.h"
00013 #include "Trigger/L1GlobalTrigger/interface/L1GlobalTriggerSetup.h"
00014 
00015 #include "HLT/HLTSteering/interface/HighLevelTriggerSetup.h"
00016 #include "HLT/HLTSteering/interface/HighLevelTrigger.h"
00017 #include "HLT/HLTElements/interface/HighLevelTriggerOrNode.h"
00018 #include "HLT/HLTElements/interface/HighLevelTriggerAndNode.h"
00019 #include "HLT/HLTElements/interface/HighLevelTriggerRandomElement.h"
00020 #include "HLT/HLTElements/interface/HLGL2L25EleTrigger.h"
00021 
00022 #include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
00023 #include <XANADOO/XANAUtilities/interface/XANAToolkit.h>
00024 
00025 #include <Utilities/UI/interface/SimpleConfigurable.h> 
00026 
00027 #include <TBits.h>
00028 #include <iostream>
00029 #include <vector>
00030 
00031 class UserAnalysis : private Observer<G3EventProxy*> {
00032   
00033 public:
00034   
00035   UserAnalysis() { 
00036 
00037     init();
00038 
00039     eventsAnalysed  = 0;
00040     runsAnalysed    = 0;
00041     lastrun         = 0;
00042     eventsTriggered = 0;
00043   }
00044   
00045   virtual ~UserAnalysis() {
00046     
00047     xana::out(1) << endl;
00048     xana::out(1) << endl;
00049     xana::out(1) << "**** L1GlobalTrigger report "  << endl;
00050     xana::out(1) << " Number of runs analysed:    " << runsAnalysed    << endl;
00051     xana::out(1) << " Number of events analysed:  " << eventsAnalysed  << endl;
00052     xana::out(1) << " Number of triggered events: " << eventsTriggered << endl;
00053     xana::out(1) << endl;
00054     xana::out(1) << endl;
00055   }
00056   
00057   void analysis(G3EventProxy* ev) {
00058     
00059     //
00060     // some statistics: count events and runs processed
00061     //
00062     eventsAnalysed++;
00063     if (ev->simSignal()->id().runNumber() != lastrun) {
00064       lastrun = (unsigned int) ev->simSignal()->id().runNumber();
00065       runsAnalysed++;
00066     }
00067     
00068     xana::out(1) << endl;
00069     xana::out(1) << "**** L1GlobalTrigger processing event ";
00070     xana::out(1) << ev->simSignal()->id().runNumber() << ":"
00071          << ev->simSignal()->id().eventInRun();
00072     xana::out(1) << " ****" << endl;
00073     
00074     //
00075     // Set up the L1 Global Trigger 
00076     //    
00077     L1GlobalTriggerSetup* setup = Singleton<L1GlobalTriggerSetup>::instance();
00078     L1GlobalTrigger* trig = setup->GlobalTrigger();
00079     
00080     //
00081     // Run and print L1 Global Trigger result (L1 Accept word)
00082     // 
00083     trig->Result().print();      
00084     
00085     //
00086     // Print L1GlobalTrigger input (L1 Trigger Objects)
00087     // 
00088     trig->Result().printL1Objects();
00089     
00090     //
00091     // Retrieve one single object info 
00092     //
00093     // (second muon)
00094     //
00095     xana::out(1) << endl;
00096     xana::out(1) << "**** RunL1GlobalTrigger:: second muon: " << endl;
00097     trig->muonCand( 1 ).print();
00098     xana::out(1) << endl;
00099 
00100     //
00101     // Retrieve one single object info 
00102     //
00103     // (first isolated electron)
00104     //
00105     xana::out(1) << endl;
00106     xana::out(1) << "**** RunL1GlobalTrigger:: first isolated electron: " << endl;
00107     trig->isolatedElectronCand( 0 ).print();
00108     xana::out(1) << endl;
00109 
00110     //
00111     // Count number of triggered events
00112     //
00113     if( trig->Result().getGlobalDecision() ) eventsTriggered++;
00114    
00115     bool decision = trig->Result().getGlobalDecision();
00116     const BitArray<128> response = trig->Result().getDecision();
00117     xana::out(1) << "L1Trigger global decision : " << decision << endl;
00118     xana::out(1) << "L1Trigger response : " ;
00119     TBits bits(128);
00120     for (int i = 0; i < 128; i++) {
00121       xana::out(1) << (response.element(i) ? '1' : '0');
00122       bits.SetBitNumber(i, response.element(i));        
00123     }   
00124     xana::out(1) << endl;
00125     SimpleConfigurable<string> l1Menu("lumi2x1033","L1Globaltrigger:TriggerMenu");
00126     XANATriggerInfo *trigger = new XANATriggerInfo(decision, bits, l1Menu.value());
00127     xana::out(1) << "===========================================================" << endl;
00128     
00129   }
00130   
00131 private :
00132   
00133   void upDate(G3EventProxy * ev) { if (ev != 0) analysis(ev); }
00134   
00135 private :
00136   
00137   unsigned int eventsAnalysed;  // count events that have been analysed
00138   unsigned int eventsTriggered; // count evennts passed trigger requirement
00139   unsigned int runsAnalysed;    // count runs
00140   unsigned int lastrun;
00141   
00142 };
00143 
00144 
00145 PKBuilder<UserAnalysis> user("L1GlobalTrigger");     
00146 
00147 

Generated on Tue May 10 10:01:25 2005 for XANADOO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002