Bug Summary

File:plugins/Utilities/trigger_skims/JEventProcessor_trigger_skims.cc
Location:line 110, column 4
Description:Value stored to 'cosmic_trigger' is never read

Annotated Source Code

1//
2// JEventProcessor_trigger_skims.cc
3//
4// JANA event processor plugin to skim various trigger types to EVIO files
5//
6// Author: Sean Dobbs
7// Adapted from Ahmed Foda, 13-May-2016 copied from Paul Mattione's 2trackskim
8
9#include "JEventProcessor_trigger_skims.h"
10#include "TRIGGER/DL1Trigger.h"
11#include "BCAL/DBCALHit.h"
12
13// for initializing plugins
14extern "C" {
15 void InitPlugin(JApplication *app)
16 {
17 InitJANAPlugin(app);
18 app->AddProcessor(new JEventProcessor_trigger_skims(), true);
19 }
20} // "extern C"
21
22
23// variables to control which triggers get read out
24bool write_out_bcal_led = true;
25bool write_out_fcal_led = true;
26bool write_out_random = true;
27
28
29//-------------------------------
30// init
31//-------------------------------
32jerror_t JEventProcessor_trigger_skims::init(void)
33{
34 int bcal_led_writeout_toggle = 1;
35 int fcal_led_writeout_toggle = 1;
36 int random_writeout_toggle = 1;
37
38 gPARMS->SetDefaultParameter("TRIGSKIM:WRITEBCALLED", bcal_led_writeout_toggle, "Write out BCAL LED events");
39 gPARMS->SetDefaultParameter("TRIGSKIM:WRITEFCALLED", fcal_led_writeout_toggle, "Write out FCAL LED events");
40 gPARMS->SetDefaultParameter("TRIGSKIM:WRITERANDOM", random_writeout_toggle, "Write out random pulser events");
41
42 if(bcal_led_writeout_toggle == 0)
43 write_out_bcal_led = false;
44 if(fcal_led_writeout_toggle == 0)
45 write_out_fcal_led = false;
46 if(random_writeout_toggle == 0)
47 write_out_random = false;
48
49 return NOERROR;
50}
51
52//-------------------------------
53// brun
54//-------------------------------
55jerror_t JEventProcessor_trigger_skims::brun(JEventLoop *locEventLoop, int32_t runnumber)
56{
57 return NOERROR;
58}
59
60//-------------------------------
61// evnt
62//-------------------------------
63jerror_t JEventProcessor_trigger_skims::evnt(JEventLoop *locEventLoop, uint64_t eventnumber)
64{
65 // Get EVIO writer
66 const DEventWriterEVIO* locEventWriterEVIO = NULL__null;
67 locEventLoop->GetSingle(locEventWriterEVIO);
68
69 // Save BOR events
70 if(locEventLoop->GetJEvent().GetStatusBit(kSTATUS_BOR_EVENT)) {
71 locEventWriterEVIO->Write_EVIOEvent( locEventLoop, "BCAL-LED" );
72 locEventWriterEVIO->Write_EVIOEvent( locEventLoop, "FCAL-LED" );
73 locEventWriterEVIO->Write_EVIOEvent( locEventLoop, "random" );
74 return NOERROR;
75 }
76
77 // Save EPICS events
78 vector<const DEPICSvalue*> locEPICSValues;
79 locEventLoop->Get(locEPICSValues);
80 if(!locEPICSValues.empty()) {
81 if (write_out_bcal_led)
82 locEventWriterEVIO->Write_EVIOEvent(locEventLoop, "BCAL-LED");
83 if (write_out_fcal_led)
84 locEventWriterEVIO->Write_EVIOEvent(locEventLoop, "FCAL-LED");
85 if (write_out_random)
86 locEventWriterEVIO->Write_EVIOEvent(locEventLoop, "random");
87 return NOERROR;
88 }
89
90 bool cosmic_trigger = false;
91 bool BCAL_LED_US_trigger = false;
92 bool BCAL_LED_DS_trigger = false;
93 bool FCAL_LED_trigger = false;
94 bool random_trigger = false;
95
96 const DL1Trigger *trig = NULL__null;
97 try {
98 locEventLoop->GetSingle(trig);
99 } catch (...) {}
100
101 // parse the triggers we want to save
102 if (trig) {
103 //printf("%5i %5i | %5i %5i %5i | %i\n",
104 // trig->trig_mask,trig->trig_mask & 0x1,
105 // trig->fp_trig_mask, trig->fp_trig_mask & 0x100,trig->fp_trig_mask & 0x200,
106 // trig->trig_mask && trig->fp_trig_mask);
107
108 if (trig->trig_mask & 0x1) {
109 // Cosmic trigger fired
110 cosmic_trigger = true;
Value stored to 'cosmic_trigger' is never read
111 }
112
113 // Select triggers based on front panel inputs
114 // Trigger bits start counting from 0
115 if (trig->fp_trig_mask & 0x100) { // Trigger front-panel bit 8
116 // Upstream BCAL LED trigger fired
117 BCAL_LED_US_trigger = true;
118 }
119 if (trig->fp_trig_mask & 0x200) { // Trigger front-panel bit 9
120 // Downstream BCAL LED trigger fired
121 BCAL_LED_DS_trigger = true;
122 }
123 if (trig->fp_trig_mask & 0x800) { // Trigger front-panel bit 11
124 // Periodic pulser trigger fired
125 random_trigger = true;
126 }
127 if (trig->fp_trig_mask & 0x004) { // Trigger front-panel bit 2
128 // FCAL LED trigger fired
129 FCAL_LED_trigger = true;
130 }
131 }
132
133 // Do some backup calculations for runs in which the BCAL LED trigger did not latch correctly
134 vector<const DBCALHit *> bcal_hits;
135 double total_bcal_energy = 0.;
136 if(write_out_bcal_led) {
137 for(unsigned int i=0; i<bcal_hits.size(); i++) {
138 total_bcal_energy += bcal_hits[i]->E;
139 }
140 }
141
142 // Save events to skim file
143
144 // Save BCAL trigger if:
145 // 1. Trigger front-panel bits 8 or 9
146 // 2. Total energy in BCAL > 12 GeV
147 // 3. Number of hits in BCAL > 200
148 bool save_BCAL_LED_event = BCAL_LED_US_trigger || BCAL_LED_DS_trigger
149 || (bcal_hits.size() >= 200) || (total_bcal_energy > 12.);
150 if (write_out_bcal_led && save_BCAL_LED_event) {
151 locEventWriterEVIO->Write_EVIOEvent(locEventLoop, "BCAL-LED");
152 }
153 if (write_out_fcal_led && FCAL_LED_trigger) {
154 locEventWriterEVIO->Write_EVIOEvent(locEventLoop, "FCAL-LED");
155 }
156 if (write_out_random && random_trigger) {
157 locEventWriterEVIO->Write_EVIOEvent(locEventLoop, "random");
158 }
159
160 return NOERROR;
161}
162
163//-------------------------------
164// erun
165//-------------------------------
166jerror_t JEventProcessor_trigger_skims::erun(void)
167{
168 return NOERROR;
169}
170
171//-------------------------------
172// fini
173//-------------------------------
174jerror_t JEventProcessor_trigger_skims::fini(void)
175{
176 return NOERROR;
177}
178