23 #if !defined(__CINT__)
31 #include "WatcherClient.h"
32 #include "ADFWatchers.h"
34 #include "CrystalWatchers.h"
35 #include "PSAWatchers.h"
36 #include "TrackedWatchers.h"
37 #include "EventPSAWatchers.h"
38 #include "EventWatchers.h"
39 #include "MetaWatchers.h"
48 const char *
GetWN(
const char *name,
const char *ext)
50 return Form(
"%s%s",name,ext);
59 TIter next(top_task->GetListOfTasks());
60 while ( (task = (TTask *)next()) ) {
61 if ( task == collector )
65 TIter next_w(fd->GetListOfTasks());
66 while ( (task = (TTask *)next_w()) ) {
67 ts_rate =
dynamic_cast<TSRate *
> (task);
69 collector->
AddHook(ts_rate,fd->GetName());
91 Bool_t ok =
false; TString DFtype = df_type;
96 if ( DFtype.Contains(
"ADF") ) {
106 fd->
Add<
KeyWatcher>(
"AgataKey",
"AgataKeys Watcher using an universal trigger");
115 if ( DFtype.Contains(
"CRYSTAL") && ! DFtype.Contains(
"CCRYSTAL") ) {
123 fd->
Add<
CrystalSpectra>(
GetWN(
"Crystal_Spectra_",ext),Form(
"Display the data for the %s crystal at the producer level",ext));
125 fd->
Add<
KeyWatcher>(
GetWN(
"Crystal_Keys_",ext),Form(
"AgataKeys Watcher for the %s crystal at the producer level",ext));
133 if ( DFtype.Contains(
"CCRYSTAL") ) {
142 fd->
Add<
CCrystalSpectra>(
GetWN(
"CCrystal_Spectra_",ext),Form(
"Display the calibrated data for the %s crystal at the preprocessing level",ext));
144 fd->
Add<
KeyWatcher>(
GetWN(
"CCrystal_Keys_",ext),Form(
"AgataKeys Watcher for the %s crystal at the preprocessing level",ext));
150 if ( DFtype.Contains(
"PSA") ) {
160 fd->
Add<
KeyWatcher>(
GetWN(
"Psa_Keys_",ext),Form(
"AgataKeys Watcher for the %s crystal at psa level",ext));
167 if ( DFtype.Contains(
"RANC0") ) {
172 AgataFrameTrigger::Build(
"RANC0",
"data:ranc0");
182 fd->
Add<
KeyWatcher>(
"Vamos_Keys",
"AgataKeys Watcher for the ancilary level");
191 if ( DFtype.Contains(
"EB") ) {
194 AgataFrameTrigger *trig = AgataFrameTrigger::Build(
"EventPSA",
"event:data event:data:psa" );
199 fd->
Add<
EBWatcher>(
GetWN(
"EventBuilder",ext),
"Display Agata spectra at the event builder level");
203 fd->
Add<
KeyWatcher>(
"EventBuilder_Keys",
"AgataKeys Watcher at the event builder level");
208 if ( DFtype.Contains(
"MERGER") ) {
210 AgataFrameTrigger *trig = AgataFrameTrigger::Build(
"Event",
"event:data event:data:psa data:ranc0");
235 fd->
Add<
KeyWatcher>(
"Merger_Keys",
"AgataKeys Watcher at the merger level",trig);
240 if ( DFtype.Contains(
"TRACKING") && !DFtype.Contains(
"TRACKING_DB")) {
242 bool EventDataConfiguration =
true;
248 if(EventDataConfiguration)
249 TriggerTracking = AgataFrameTrigger::Build(
"TRACKING",
"event:data data:ranc0 event:data:psa data:tracked");
251 TriggerTracking= AgataFrameTrigger::Build(
"TRACKING",
"data:tracked");
253 if(EventDataConfiguration)
254 TriggerTracking = AgataFrameTrigger::Build(
"TRACKING",
"event:data event:data:psa data:tracked");
256 TriggerTracking= AgataFrameTrigger::Build(
"TRACKING",
"data:tracked");
261 fd->
Add<
TrackingWatcher>(
"Tracking",
"Display Agata spectra at the tracking level",TriggerTracking);
267 fd->
Add<
KeyWatcher>(
"Tracking_Keys",
"AgataKeys Watcher at the tracking level",TriggerTracking);
268 fd->
Add<
KeyWatcher>(
"All_Keys",
"Universal AgataKeys Watcher",UnivTrig);
273 if ( DFtype.Contains(
"TRACKING_DB") ) {
275 bool EventDataConfiguration =
true;
282 if(EventDataConfiguration)
283 TriggerTracking = AgataFrameTrigger::Build(
"TRACKING",
"event:data data:ranc0 event:data:psa data:tracked");
285 TriggerTracking= AgataFrameTrigger::Build(
"TRACKING",
"data:tracked");
287 if(EventDataConfiguration)
288 TriggerTracking = AgataFrameTrigger::Build(
"TRACKING",
"event:data event:data:psa data:tracked");
290 TriggerTracking= AgataFrameTrigger::Build(
"TRACKING",
"data:tracked");
295 fd->
Add<
KeyWatcher>(
"All_Keys",
"Universal AgataKeys Watcher",UnivTrig);
296 AgataFrameTrigger *VamosOnly = AgataFrameTrigger::Build(
"TRACKING",
"event:data data:ranc0 !event:data:psa !data:tracked");
297 AgataFrameTrigger *AgataOnly = AgataFrameTrigger::Build(
"TRACKING",
"event:data !data:ranc0 event:data:psa data:tracked");
298 fd->
Add<
KeyWatcher>(
"Tracking_Keys_Normal",
"AgataKeys Watcher at the tracking level",TriggerTracking);
299 fd->
Add<
KeyWatcher>(
"Tracking_Keys_Vamos",
"AgataKeys Watcher at the tracking level",VamosOnly);
300 fd->
Add<
KeyWatcher>(
"Tracking_Keys_AGATA",
"AgataKeys Watcher at the tracking level",AgataOnly);
const char * GetWN(const char *name, const char *ext)
Build the Watcher name adding an extension.
void AddHook(Watcher *, const char *)
Add a timestamp rate.
virtual SharedFP * Add(const FactoryItem &key_item, const FactoryItem &frame_item, bool iscons=true, const Char_t *option="")
Add a frame to the list of required frames.
Watcher to keep last TS values.
Process a buffer, trigg and dispachs the work to sub-watchers.
Bool_t SetupWatchers(const char *df_type, FrameDispatcher *fd, const char *ext="")
It shows how to set up the watchers for different kind of data flow.
virtual Bool_t SetTrigger(ADF::DFTrigger *)
This is the default trigger for any added watcher.
Watcher_T * Add(const Char_t *name, const Char_t *title, ADF::DFTrigger *t=0x0)
allocate a new watcher so that it creates corectly its directory under the dispatcher directory ...
Base class for version numbers.
AgataFrameTrigger * GetUniversalTrigger()
void DoTSRateCollector(TTask *top_task, TSRateCollector *collector)
browse all dispatchers to look for TSRate Watcher and add them to the rate collector ...
To be used for Agata Data Flow.
! Show rates (counts) per Crystal *!
Crystal spectra watcher class.
void Universal(Bool_t b=true)
Set this trigger as universal or not.
Base class that described an item in a Factory.
compute histograms for several TSRate