source: JEM-EUSO/esaf_cc_at_lal/packages/simulation/detector/electronics/src/TriggerEngine.cc @ 114

Last change on this file since 114 was 114, checked in by moretto, 11 years ago

actual version of ESAF at CCin2p3

File size: 4.6 KB
Line 
1// ESAF : Euso Simulation and Analysis Framework
2// $Id: TriggerEngine.cc 2967 2011-07-14 15:23:29Z fenu $
3// M. Pallavicini created Oct, 24 2003
4
5#include "TriggerEngine.hh"
6#include "PersistencyTriggerEngine.hh"
7#include "ChipTrackingTrgEngine.hh"
8#include "ChipTrackingTrgEngine0.hh"
9#include "ChipTrackingTrgEngine1.hh"
10#include "ChipTrackingTrgEngine2.hh"
11#include "ChipTrackingTrgEngine3.hh"
12#include "ChipTrackingTrgEngine4.hh"
13#include "SignalChipTrackingTrgEngine.hh"
14#include "CellTrackingTrgEngine.hh"
15#include "LblChipTrackingTrgEngine.hh"
16#include "PTTTrigger.hh"
17#include "LTTTrigger.hh"
18#include "CCB_LTTTrigger.hh"
19
20ClassImp (TriggerEngine)
21// trigger word
22     Int_t TriggerEngine::fTriggerWord = 0;
23
24//trg words of child triggers
25map < Int_t, Int_t > TriggerEngine::fTrgWords;
26
27// map with all engines
28map < ETriggerTypeIdentifier, TriggerEngine * >*TriggerEngine::fEngines = 0;
29
30//______________________________________________________________________________
31TriggerEngine::TriggerEngine (const string & name, ETriggerTypeIdentifier id):
32EsafConfigurable ()
33{
34  //
35  // Constructor
36  //
37  fName = name;
38  fHasTriggered = kFALSE;
39  fTrgId = id;
40  fTriggerWord = 0;
41  fGtuTrigger=0;
42  fGtuTriggerCCB=0;
43}
44
45//______________________________________________________________________________
46TriggerEngine::~TriggerEngine ()
47{
48  //
49  // Destructor
50  //
51}
52
53
54//______________________________________________________________________________
55map < ETriggerTypeIdentifier,
56  TriggerEngine * >&TriggerEngine::GetEngines (ETriggerTypeIdentifier type)
57{
58  //
59  // return the map of engines
60  // basically a factory method for all trigger algorithms
61  // right now static: the same trigger structure for all macrocells
62  // easy to generalize to macrocell dependent trigger code
63  //
64
65  if (fEngines)
66    {
67      return *fEngines;
68    }
69  fEngines = new map < ETriggerTypeIdentifier, TriggerEngine * >;
70  if (type & kPersistencyTrigger)
71    {
72      (*fEngines)[kPersistencyTrigger] = new PersistencyTriggerEngine ();
73      cout << " *** Trigger: Persistency trigger enabled" << endl;
74    }
75  if (type & kContiguityTrigger)
76    {
77      // to be done
78    }
79  if (type & kChipTrackingTrigger)
80    {
81      (*fEngines)[kChipTrackingTrigger] = new ChipTrackingTrgEngine ();
82      cout << " *** Trigger: Chip Tracking trigger enabled" << endl;
83    }
84  if (type & kChipTrackingTrigger0)
85    {
86      (*fEngines)[kChipTrackingTrigger0] = new ChipTrackingTrgEngine0 ();
87      cout << " *** Trigger: Chip Tracking 0 trigger enabled" << endl;
88    }
89  if (type & kChipTrackingTrigger1)
90    {
91      (*fEngines)[kChipTrackingTrigger1] = new ChipTrackingTrgEngine1 ();
92      cout << " *** Trigger: Chip Tracking 1 trigger enabled" << endl;
93    }
94  if (type & kChipTrackingTrigger2)
95    {
96      (*fEngines)[kChipTrackingTrigger2] = new ChipTrackingTrgEngine2 ();
97      cout << " *** Trigger: Chip Tracking 2 trigger enabled" << endl;
98    }
99  if (type & kChipTrackingTrigger3)
100    {
101      (*fEngines)[kChipTrackingTrigger3] = new ChipTrackingTrgEngine3 ();
102      cout << " *** Trigger: Chip Tracking 3 trigger enabled" << endl;
103    }
104  if (type & kChipTrackingTrigger4)
105    {
106      (*fEngines)[kChipTrackingTrigger4] = new ChipTrackingTrgEngine4 ();
107      cout << " *** Trigger: Chip Tracking 4 trigger enabled" << endl;
108    }
109  if (type & kSignalChipTrackingTrigger)
110    {
111      (*fEngines)[kSignalChipTrackingTrigger] =
112        new SignalChipTrackingTrgEngine ();
113      cout << " *** Trigger: Signal Chip Tracking trigger enabled" << endl;
114    }
115  if (type & kCellTrackingTrigger)
116    {
117      (*fEngines)[kCellTrackingTrigger] = new CellTrackingTrgEngine ();
118      cout << " *** Trigger: Cell Tracking trigger enabled" << endl;
119    }
120  if (type & kLblChipTrackingTrigger)
121    {
122      (*fEngines)[kLblChipTrackingTrigger] = new LblChipTrackingTrgEngine ();
123      cout << " *** Trigger: Lbl Chip Tracking trigger enabled" << endl;
124    }
125
126  if (type & kPTTTrigger)
127    {
128      (*fEngines)[kPTTTrigger] = new PTTTrigger ();
129      cout << " *** Trigger: PTTTrigger  trigger enabled" << endl;
130    }
131
132  if (type & kLTTTrigger)
133    {
134      (*fEngines)[kLTTTrigger] = new LTTTrigger ();
135      cout << " *** Trigger: LTT  trigger enabled" << endl;
136    }
137
138 if (type & kCCB_LTTTrigger)
139    {
140      (*fEngines)[kCCB_LTTTrigger] = new CCB_LTTTrigger ();
141      cout << " *** Trigger: CCB_LTT  trigger enabled" << endl;
142    }
143
144
145
146  return *fEngines;
147}
148
149void
150TriggerEngine::SetTrigger (Int_t word)
151{
152  //
153  // set the chip tracking trigger engines word
154  //
155  fHasTriggered = kTRUE;
156  fTriggerWord |= (Int_t) GetTriggerId ();
157  if (fTrgWords.count ((Int_t) GetTriggerId ()) == 0)
158    fTrgWords[(Int_t) GetTriggerId ()] = word;
159  else
160    fTrgWords[(Int_t) GetTriggerId ()] |= word;
161}
Note: See TracBrowser for help on using the repository browser.