00001
00002
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
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
00076
00077 L1GlobalTriggerSetup* setup = Singleton<L1GlobalTriggerSetup>::instance();
00078 L1GlobalTrigger* trig = setup->GlobalTrigger();
00079
00080
00081
00082
00083 trig->Result().print();
00084
00085
00086
00087
00088 trig->Result().printL1Objects();
00089
00090
00091
00092
00093
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
00102
00103
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
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;
00138 unsigned int eventsTriggered;
00139 unsigned int runsAnalysed;
00140 unsigned int lastrun;
00141
00142 };
00143
00144
00145 PKBuilder<UserAnalysis> user("L1GlobalTrigger");
00146
00147