CFEL - ASG Software Suite  2.5.0
CASS
processor_manager.cpp
Go to the documentation of this file.
1 // Copyright (C) 2010 Lutz Foucar
2 // Copyright (C) 2010 Jochen Küpper
3 
4 /**
5  * @file processor_manager.cpp contains the manager for the processors
6  *
7  * @author Lutz Foucar
8  */
9 
10 #include <QtCore/QMutex>
11 #include <QtCore/QStringList>
12 
13 #include <cassert>
14 #include <algorithm>
15 #include <iostream>
16 #include <functional>
17 #include <tr1/functional>
18 
19 #include "processor_manager.h"
20 
21 #include "cass_exceptions.hpp"
22 #include "processor.h"
23 #include "result.hpp"
24 #include "id_list.h"
25 #include "cass_settings.h"
26 #include "log.h"
27 #include "acqiris_detectors.h"
28 #ifdef ACHIMSRESORTER
29 #include "achimcalibrator_hex.h"
30 #endif
31 #include "alignment.h"
32 #include "waveform.h"
33 #include "operations.h"
34 #include "rankfilter.h"
35 #include "imaging.h"
36 #include "machine_data.h"
37 #include "coltrims_analysis.h"
38 #include "pixel_detectors.h"
39 #include "image_manipulation.h"
40 #include "partial_covariance.h"
41 #include "cbf_output.h"
42 #include "hitfinder.h"
43 #include "table_operations.h"
44 #include "autocorrelation.h"
46 
47 #ifdef HDF5
48 #include "hdf5_converter.h"
49 #endif
50 
51 #ifdef SINGLEPARTICLE_HIT
52 #include "hitrate.h"
53 #endif
54 
55 #ifdef CERNROOT
56 #include "root_converter.h"
57 #include "roottree_converter.h"
58 #endif
59 
60 #ifdef FFTW
61 #include "fft.h"
62 #endif
63 
64 using namespace cass;
65 using namespace std;
66 
67 // ============define static members (do not touch)==============
70 
72 {
73  static int create(0);
74  QMutexLocker locker(&_mutex);
75  if(!_instance)
76  {
77  Log::add(Log::VERBOSEINFO,"ProcessorManager::instance -- create "+ toString(++create));
78  _instance = shared_pointer(new ProcessorManager(outputfilename));
79  locker.unlock();
80  _instance->loadSettings(0);
81  }
82  return _instance;
83 }
84 
86 {
87  QMutexLocker lock(&_mutex);
88  if (!_instance)
89  throw logic_error("ProcessorManager::instance(): The instance has not yet been created");
90  return _instance;
91 }
92 
93 ProcessorManager::shared_pointer::element_type& ProcessorManager::reference()
94 {
95  QMutexLocker lock(&_mutex);
96  if (!_instance)
97  throw logic_error("ProcessorManager::reference(): The instance has not yet been created");
98  return *_instance;
99 }
100 //===============================================================
101 
102 
103 
105  :_keys(new IdList()),
106  _outputfilename(outputfilename)
107 
108 {
109  Log::add(Log::DEBUG0,"ProcessorManager::constructor: output Filename: " +
111 }
112 
114 {
115  /**
116  * @todo catch when processor throws an exeption and delete the
117  * processor from the active list.
118  * - create a remove list with all processors that depend on this
119  * - go through that list and fill all pp that depend on the ones in
120  * the list recursivly.
121  * - remove all pp that made it on the removelist
122  * - this needs to be done in a locked way since more than one thread
123  * do this
124  *
125  * @note one should not use for_each macro here, because the procressors
126  * rely on beeing processed sequantially in the right order. Using
127  * for_each could result in parallel execution via omp.
128  */
129  processors_t::iterator iter(_processors.begin());
130  processors_t::iterator end(_processors.end());
131  while(iter != end)
132  (*iter++)->processEvent(event);
133  /** tell the pp that the event is completly processed */
134  iter=_processors.begin();
135  while(iter != end)
136  (*(iter++))->releaseEvent(event);
139 }
140 
142 {
143  /** @note one should not use for_each macro here, because the procressors
144  * rely on beeing processed sequantially in the right order. Using
145  * for_each could result in parallel execution via omp.
146  */
147  processors_t::iterator iter = _processors.begin();
148  processors_t::iterator end = _processors.end();
149  while( iter != end )
150  (*iter++)->aboutToQuit();
151 }
152 
154 {
155  /** remove all processors */
156  _processors.clear();
157 
158  /** load all processors declared in the ini file and convert them to list
159  * of std strings
160  */
161  Log::add(Log::DEBUG0,"ProcessorManager::loadSettings");
162  CASSSettings settings;
163  settings.beginGroup("Processor");
164  QStringList list(settings.childGroups());
165  string output("Processor::loadSettings(): ini file '" + settings.fileName().toStdString() +
166  "' contains in Group '" + settings.group().toStdString() + "': ");
167  foreach(QString str, list)
168  {
169  output += (str.toStdString() + ", ");
170  }
171  Log::add(Log::DEBUG1,output);
172  Processor::names_t declaredProcessors(list.size());
173  transform(list.begin(), list.end(), declaredProcessors.begin(),
174  tr1::bind(&QString::toStdString,tr1::placeholders::_1));
175  Log::add(Log::VERBOSEINFO, "ProcessorManager::loadSettings(): Number of unique processor activations: " +
176  toString(declaredProcessors.size()));
177 
178  /** add a default true and false processors to beginning of list*/
179  declaredProcessors.push_front("DefaultTrueHist");
180  declaredProcessors.push_front("DefaultFalseHist");
181 
182  /** create all processors in the list*/
183  Processor::names_t::const_iterator iter(declaredProcessors.begin());
184  Processor::names_t::const_iterator end = declaredProcessors.end();
185  while( iter != end )
186  {
187  _processors.push_back(create(*iter++));
188  }
189 
190  /** sort the processors such that the ones with no dependencies are ealier
191  * in the list
192  */
193  processors_t::iterator pp(_processors.begin());
194  processors_t::iterator pEnd(_processors.end());
195  while (pp != pEnd)
196  {
197  /** retrive dependencies of processor */
198  typedef Processor::names_t deps_t;
199  const deps_t &deps((*pp)->dependencies());
200 
201  /** move all dependencies of this processor that appear later in the list
202  * to one before this processor in the list and set the pointer to
203  * the moved processor
204  */
205  bool reordered(false);
206  deps_t::const_iterator dep(deps.begin());
207  deps_t::const_iterator depEnd(deps.end());
208  while (dep != depEnd)
209  {
210  processors_t::iterator it(pp);
211  while (it != pEnd)
212  {
213  if (*dep == (*it)->name())
214  {
215  pp = _processors.insert(pp,*it); //pp points to the inserted element
216  _processors.erase(it); //it points to the element after the erased element
217  reordered = true;
218  break;
219  }
220  ++it;
221  }
222  ++dep;
223  }
224 
225  /** when the list has not been reordered we continue with the next element
226  * in the next iteration, otherwise we should treat the current element in
227  * the next iteration
228  */
229  if(!reordered)
230  ++pp;
231  }
232 
233  /** log which pp are generated and their order*/
234  output = "ProcessorManager::loadSettings(): Processors in the order they are called:";
235  pp = _processors.begin();
236  while (pp != pEnd)
237  output += ((*pp++)->name() + ", ");
238  Log::add(Log::INFO,output);
239 
240  /** load the settings of the processors */
241  pp = _processors.begin();
242  while (pp != pEnd)
243  (*pp++)->loadSettings(0);
244 }
245 
248 {
249  processors_t::iterator iter(_processors.begin());
250  processors_t::iterator end(_processors.end());
251  while (iter != end)
252  {
253  if ((*iter)->name() == name)
254  return *iter;
255  ++iter;
256  }
257  throw InvalidProcessorError(name);
258 }
259 
261 {
262  return *getProcessorSPointer(name);
263 }
264 
265 tr1::shared_ptr<IdList> ProcessorManager::keys()
266 {
267  keyList_t active;
268  processors_t::iterator iter(_processors.begin());
269  processors_t::iterator end(_processors.end());
270  for(; iter != end; ++iter)
271  if (!(*iter)->hide())
272  active.push_back((*iter)->name());
273  _keys->setList(active);
274  return _keys;
275 }
276 
278 {
279  if (key == "DefaultTrueHist")
280  return Processor::shared_pointer(new pp12("DefaultTrueHist"));
281  if (key == "DefaultFalseHist")
282  return Processor::shared_pointer(new pp12("DefaultFalseHist"));
283 
284  CASSSettings s;
285  s.beginGroup("Processor");
287  id_t ppid (static_cast<ProcessorManager::id_t>(s.value("ID",0).toUInt()));
288  Log::add(Log::DEBUG0,"ProcessorManager::create(): Creating PP '" + key +
289  "' with ID=" + toString(ppid));
290  Processor::shared_pointer processor;
291  switch(ppid)
292  {
293  case OperationsOn2Histos:
294  processor = Processor::shared_pointer(new pp1(key));
295  break;
296  case OperationWithValue:
297  processor = Processor::shared_pointer(new pp2(key));
298  break;
299  case BooleanNOT:
300  processor = Processor::shared_pointer(new pp4(key));
301  break;
302  case CheckRange:
303  processor = Processor::shared_pointer(new pp9(key));
304  break;
305  case ConstantValue:
306  processor = Processor::shared_pointer(new pp12(key));
307  break;
308  case Identity:
309  processor = Processor::shared_pointer(new pp13(key));
310  break;
311  case TernaryOperator:
312  processor = Processor::shared_pointer(new pp14(key));
313  break;
314  case CheckChange:
315  processor = Processor::shared_pointer(new pp15(key));
316  break;
317  case Threshold:
318  processor = Processor::shared_pointer(new pp40(key));
319  break;
320  case ThresholdImage:
321  processor = Processor::shared_pointer(new pp41(key));
322  break;
323  case TwoDProjection:
324  processor = Processor::shared_pointer(new pp50(key));
325  break;
326  case OneDIntergral:
327  processor = Processor::shared_pointer(new pp51(key));
328  break;
329  case imageManip:
330  processor = Processor::shared_pointer(new pp55(key));
331  break;
332  case previousHist:
333  processor = Processor::shared_pointer(new pp56(key));
334  break;
335  case weightedProject:
336  processor = Processor::shared_pointer(new pp57(key));
337  break;
338  case ZeroDHistogramming:
339  processor = Processor::shared_pointer(new pp60(key));
340  break;
341  case HistogramAveraging:
342  processor = Processor::shared_pointer(new pp61(key));
343  break;
344  case HistogramSumming:
345  processor = Processor::shared_pointer(new pp62(key));
346  break;
347  case TimeAverage:
348  processor = Processor::shared_pointer(new pp63(key));
349  break;
350  case running1Dfrom0D:
351  processor = Processor::shared_pointer(new pp64(key));
352  break;
354  processor = Processor::shared_pointer(new pp65(key));
355  break;
357  processor = Processor::shared_pointer(new pp66(key));
358  break;
360  processor = Processor::shared_pointer(new pp68(key));
361  break;
362  case OneDtoScatterPlot:
363  processor = Processor::shared_pointer(new pp69(key));
364  break;
365  case SubsetHistogram:
366  processor = Processor::shared_pointer(new pp70(key));
367  break;
368  case RetrieveValue:
369  processor = Processor::shared_pointer(new pp71(key));
370  break;
372  processor = Processor::shared_pointer(new pp72(key));
373  break;
374  case SubsetTable:
375  processor = Processor::shared_pointer(new pp73(key));
376  break;
377  case RetrieveValOfRow:
378  processor = Processor::shared_pointer(new pp74(key));
379  break;
380  case ClearHistogram:
381  processor = Processor::shared_pointer(new pp75(key));
382  break;
383  case QuitCASS:
384  processor = Processor::shared_pointer(new pp76(key));
385  break;
386  case IdIsOnList:
387  processor = Processor::shared_pointer(new pp77(key));
388  break;
389  case Counter:
390  processor = Processor::shared_pointer(new pp78(key));
391  break;
392  case Table2TwoDHist:
393  processor = Processor::shared_pointer(new pp79(key));
394  break;
395  case maximumBin:
396  processor = Processor::shared_pointer(new pp81(key));
397  break;
398  case meanvalue:
399  processor = Processor::shared_pointer(new pp82(key));
400  break;
401  case fwhmPeak:
402  processor = Processor::shared_pointer(new pp85(key));
403  break;
404  case step:
405  processor = Processor::shared_pointer(new pp86(key));
406  break;
407  case centerofmass:
408  processor = Processor::shared_pointer(new pp87(key));
409  break;
410  case axisparameter:
411  processor = Processor::shared_pointer(new pp88(key));
412  break;
413  case highlowpassfilter:
414  processor = Processor::shared_pointer(new pp89(key));
415  break;
416  case qaverage:
417  processor = Processor::shared_pointer(new pp90(key));
418  break;
419  case nodes:
420  processor = Processor::shared_pointer(new pp91(key));
421  break;
422  case PixelDetectorImage:
423  processor = Processor::shared_pointer(new pp105(key));
424  break;
425  case CorrectionMaps:
426  processor = Processor::shared_pointer(new pp107(key));
427  break;
429  processor = Processor::shared_pointer(new pp109(key));
430  break;
431  case AcqirisWaveform:
432  processor = Processor::shared_pointer(new pp110(key));
433  break;
435  processor = Processor::shared_pointer(new pp111(key));
436  break;
437  case CFDAnalysis:
438  processor = Processor::shared_pointer(new pp112(key));
439  break;
440  case BlData:
441  processor = Processor::shared_pointer(new pp120(key));
442  break;
443  case EvrCode:
444  processor = Processor::shared_pointer(new pp121(key));
445  break;
446  case EventID:
447  processor = Processor::shared_pointer(new pp122(key));
448  break;
449  case BldSpecData:
450  processor = Processor::shared_pointer(new pp123(key));
451  break;
452  case EpicsData:
453  processor = Processor::shared_pointer(new pp130(key));
454  break;
456  processor = Processor::shared_pointer(new pp144(key));
457  break;
459  processor = Processor::shared_pointer(new pp145(key));
460  break;
462  processor = Processor::shared_pointer(new pp146(key));
463  break;
465  processor = Processor::shared_pointer(new pp148(key));
466  break;
468  processor = Processor::shared_pointer(new pp149(key));
469  break;
470  case TofDetNbrSignals:
471  processor = Processor::shared_pointer(new pp150(key));
472  break;
473  case TofDetAllSignals:
474  processor = Processor::shared_pointer(new pp151(key));
475  break;
477  processor = Processor::shared_pointer(new pp152(key));
478  break;
479  case TofDetDeadtime:
480  processor = Processor::shared_pointer(new pp153(key));
481  break;
482  case WireendNbrSignals:
483  processor = Processor::shared_pointer(new pp160(key));
484  break;
485  case WireendHeightvsFwhm:
486  processor = Processor::shared_pointer(new pp161(key));
487  break;
488  case AnodeTimesum:
489  processor = Processor::shared_pointer(new pp162(key));
490  break;
491  case AnodeTimesumVsPos:
492  processor = Processor::shared_pointer(new pp163(key));
493  break;
495  processor = Processor::shared_pointer(new pp164(key));
496  break;
498  processor = Processor::shared_pointer(new pp165(key));
499  break;
501  processor = Processor::shared_pointer(new pp166(key));
502  break;
504  processor = Processor::shared_pointer(new pp167(key));
505  break;
506 #ifdef ACHIMSRESORTER
507  case HEXCalibrator:
508  processor = Processor::shared_pointer(new HexCalibrator(key));
509  break;
510 #endif
511  case Cos2Theta:
512  processor = Processor::shared_pointer(new pp200(key));
513  break;
515  processor = Processor::shared_pointer(new pp201(key));
516  break;
518  processor = Processor::shared_pointer(new pp202(key));
519  break;
520  case MedianBoxBackground:
521  processor = Processor::shared_pointer(new pp203(key));
522  break;
523  case BraggPeakSNR:
524  processor = Processor::shared_pointer(new pp204(key));
525  break;
526  case DrawPeaks:
527  processor = Processor::shared_pointer(new pp205(key));
528  break;
529  case BraggPeakThreshold:
530  processor = Processor::shared_pointer(new pp206(key));
531  break;
533  processor = Processor::shared_pointer(new pp208(key));
534  break;
536  processor = Processor::shared_pointer(new pp209(key));
537  break;
538  case BraggPeakMedian:
539  processor = Processor::shared_pointer(new pp210(key));
540  break;
541  case PIPICO:
542  processor = Processor::shared_pointer(new pp220(key));
543  break;
544  case PhotonEnergy:
545  processor = Processor::shared_pointer(new pp230(key));
546  break;
547  case TestImage:
548  processor = Processor::shared_pointer(new pp240(key));
549  break;
550  case fixOffset:
551  processor = Processor::shared_pointer(new pp241(key));
552  break;
553  case MaskValue:
554  processor = Processor::shared_pointer(new pp242(key));
555  break;
556  case MaskImageValue:
557  processor = Processor::shared_pointer(new pp243(key));
558  break;
559  case PixelHistogram:
560  processor = Processor::shared_pointer(new pp244(key));
561  break;
562  case ParticleValue:
563  processor = Processor::shared_pointer(new pp250(key));
564  break;
565  case ParticleValues:
566  processor = Processor::shared_pointer(new pp251(key));
567  break;
568  case NbrParticles:
569  processor = Processor::shared_pointer(new pp252(key));
570  break;
571 #ifdef SINGLEPARTICLE_HIT
573  processor = Processor::shared_pointer(new pp300(key));
574  break;
575 #endif
576  case medianLastValues:
577  processor = Processor::shared_pointer(new pp301(key));
578  break;
579  case binaryFile2D:
580  processor = Processor::shared_pointer(new pp302(key));
581  break;
582  case Autocorrelation:
583  processor = Processor::shared_pointer(new pp310(key));
584  break;
585  case Autocorrelation2:
586  processor = Processor::shared_pointer(new pp311(key));
587  break;
588 #ifdef FFTW
589  case fft:
590  processor = Processor::shared_pointer(new pp312(key));
591  break;
592 #endif
593 #ifdef SINGLEPARTICLE_HIT
594  case convoluteKernel:
595  processor = Processor::shared_pointer(new pp313(key));
596  break;
597 #endif
598  case calibration:
599  processor = Processor::shared_pointer(new pp330(key));
600  break;
601  case gaincalibration:
602  processor = Processor::shared_pointer(new pp331(key));
603  break;
604  case hotpixmap:
605  processor = Processor::shared_pointer(new pp332(key));
606  break;
607  case commonmodecalc:
608  processor = Processor::shared_pointer(new pp333(key));
609  break;
610  case commonmodecalcCsPad:
611  processor = Processor::shared_pointer(new pp334(key));
612  break;
613  case tof2energy:
614  processor = Processor::shared_pointer(new pp400(key));
615  break;
616  case TofToMTC:
617  processor = Processor::shared_pointer(new pp404(key));
618  break;
619  case PulseDuration:
620  processor = Processor::shared_pointer(new pp405(key));
621  break;
622  case tof2energy0D:
623  processor = Processor::shared_pointer(new pp406(key));
624  break;
625  case tof2energylinear:
626  processor = Processor::shared_pointer(new pp407(key));
627  break;
628  case tof2energylinear0D:
629  processor = Processor::shared_pointer(new pp408(key));
630  break;
631  case calcCovarianceMap:
632  processor = Processor::shared_pointer(new pp410(key));
633  break;
634  case calcCorrection:
635  processor = Processor::shared_pointer(new pp412(key));
636  break;
637  case AddColumnToTable:
638  processor = Processor::shared_pointer(new pp500(key));
639  break;
640 #ifdef HDF5
641  case HDF52dConverter:
642  processor = Processor::shared_pointer(new pp1002(key));
643  break;
644 #endif
645  case CBFOutput:
646  processor = Processor::shared_pointer(new pp1500(key));
647  break;
648  case ChetahConv:
649  processor = Processor::shared_pointer(new pp1600(key));
650  break;
651  case CoarseCsPadAligment:
652  processor = Processor::shared_pointer(new pp1601(key));
653  break;
655  processor = Processor::shared_pointer(new pp1602(key));
656  break;
657 #ifdef CERNROOT
658  case ROOTDump:
659  processor = Processor::shared_pointer(new pp2000(key));
660  break;
661  case ROOTTreeDump:
662  processor = Processor::shared_pointer(new pp2001(key,_outputfilename));
663  break;
664 #endif
665  case ElectronEnergy:
666  processor = Processor::shared_pointer(new pp5000(key));
667  break;
668  case TrippleCoincidence:
669  processor = Processor::shared_pointer(new pp5001(key));
670  break;
671  default:
672  throw invalid_argument("ProcessorManager::create(): Processor '" + key +
673  "' has unknown ID '" + toString(ppid) + "'");
674  }
675  return processor;
676 }
generate a 2d Histogram from values of 2 columns of a table
file contains processors that will operate on histograms of other processors, calculating statistical...
1D to 2D combining
Definition: operations.h:1511
id_t
List of all currently registered processors.
apply mask to an image, set the masked pixel to a certain value
Create a radial average of q values from a raw detector image.
Event to store all LCLS Data.
Definition: cass_event.h:32
Timesum of Delayline.
convert time of flight to charge to mass ratio
find bragg peaks and store them in a list
Definition: hitfinder.h:97
contains processors that will operate on table like histograms of other processors.
retrieve a specific value of a specific row
result averaging.
Definition: operations.h:1096
Achims resort routine calibrator.
calculate the autocorrelation of an image
cfd trace from waveform
Definition: waveform.h:89
find step in 1d result
Definition: operations.h:2122
Processor::shared_pointer getProcessorSPointer(const Processor::name_t &name)
retreive pp with name
image of detected pixels in a pixeldetector.
Processor::name_t key_t
type of proccessor accessor key
Timesum of Delayline Anode vs Position of Anode.
file contains the classes that can serialize the key list
processors for single particle hitfinding
Settings for CASS.
Definition: cass_settings.h:30
void operator()(const CASSEvent &event)
process event
add a new column where the contents are taken from another results based on the index provided in thi...
retrieve user choosable type of bin of 1D result
Definition: operations.h:1919
void aboutToQuit()
will be called when program will quit
pixel detector gain calibrations
file contains class that uses achims calibration capabilities
Single particle hit.
Definition: hitrate.h:55
converts a Electron Time of Flight trace to Energy
of a requested image.
Definition: alignment.h:41
std::tr1::shared_ptr< IdList > keys()
retrieve all activated processors keys
root file converter
std::tr1::shared_ptr< IdList > _keys
the list of keys.
Counter.
Definition: operations.h:1876
0D, 1D, and 2D to 2D histogramming.
Definition: operations.h:1354
file contains processors that will manipulate 2d histograms
STL namespace.
file contains processors that will operate on results of other processors
container and call handler for all registered processors.
coalesced pixels (hits) on a pixeldetector.
generate a histogram for each pixel of the input 2d image
file contains declaration of processors that extract information of acqiris detectors.
convert cspad 2d histogram into cheetah layout
Operation on 2 results.
Definition: operations.h:57
converts histograms to (c)rystal (b)inary (f)ormat files.
Definition: cbf_output.h:38
processors_t _processors
container for user selected and registered processors
void loadSettings(size_t)
Load active processors and histograms.
Pixeldetector raw image.
find connected pixels, coalesce them and store them in a list
Definition: hitfinder.h:590
all mcp signals.
Particle values.
retrieval of beamline data.
Definition: machine_data.h:74
Pipico spectra.
processors that calculate laser alignment parameters
result classes
get all rows with condition on a column
file contains declaration of processor 2000
0D,1D or 2D to 1D histogramming.
Definition: operations.h:959
processors that do calibrations on pixel detector data
calculate the absolute squared fft of an histogram
Definition: fft.h:58
calculate intensity correction
cfd analysis of waveform
Definition: waveform.h:138
return full width at half maximum in given range of 1D result
Definition: operations.h:2060
Processor::shared_pointer create(const key_t &key)
factory to create new processor with the name key.
file contains custom exceptions used in cass
Weighted Projection of 2D result.
Definition: operations.h:851
Electron energy.
detector picture of first hit.
file contains declaration of processor 2001
Check whether value has changed.
Definition: operations.h:435
0D to 1D scatter plot.
Definition: operations.h:1605
std::string _outputfilename
filename of the output file
static void add(Level level, const std::string &line)
add a string to the log
Definition: log.cpp:31
convolute histogram with kernel
Definition: hitrate.h:154
Test image.
Definition: imaging.h:58
fromStdString(const std::string &str)
pixel detector hot pixel detection
calc the pulse duration from the bld
Pixeldetector image.
visualize the peaks that were found in the image itself
Definition: hitfinder.h:224
Processor::names_t keyList_t
List of all processor keys.
std::list< name_t > names_t
define the list of names
Definition: processor.h:49
Checks for id on list.
Definition: operations.h:1835
record 0d result into 1d result.
Definition: operations.h:1286
base class for processors.
Definition: processor.h:39
static shared_pointer _instance
pointer to the singleton instance
low / high pass filter of 1D result
Definition: operations.h:2300
Number of detected pixels of an pixeldetector.
Operation on result with value.
Definition: operations.h:121
static shared_pointer instance()
return the already created instance of this
file contains acqiris data retrieval processor declaration
pixel detector common mode background calculation
Number of Signals in Anode Layers Waveform.
Apply boolean NOT to 0D result.
Definition: operations.h:211
ProcessorManager(std::string outputfilename)
Private constructor of singleton.
Number of particles found per shot.
get specific column from table like histogram
calculate median of last values.
Definition: rankfilter.h:42
angular distribution of a requested image.
Definition: alignment.h:107
store previous result of other Processor
Definition: operations.h:789
static void releaseDetector(const id_type &id)
release the detector of all helpers that is blocked for the event
clear result
Definition: operations.h:393
0D and 1D to 2D combining.
Definition: operations.h:1560
Deadtime between two consecutive mcp signals.
contains processors that will extract pixels of interrest from 2d histograms.
Number of coalesced pixels (hits) in a pixeldetector.
contains the manager for the processors
id_t & id()
setters
Definition: cass_event.h:64
Tof to Energy correct from 0D histogram.
Exception thrown when accessing invalid processor.
find pixels of bragg peaks and store them in a list
Definition: hitfinder.h:277
std::string toString(const Type &t)
convert any type to a string
Definition: cass.h:63
Integral of 1D result.
Definition: operations.h:726
check whether event contains eventcode
Definition: machine_data.h:111
file contains processors baseclass declaration
Quit Program.
Definition: operations.h:1794
time average of 0d result.
Definition: operations.h:1231
contains processor dealing with more advanced pixel detectors.
binary function for averaging.
saves a selected 2d histogram to hdf5
return axis parameter of a result
Definition: operations.h:2218
Processor & getProcessor(const Processor::name_t &name)
retreive pp with key
convert cspad data into laboratory frame using crystfel geometry files
value(const QString &key, const QVariant &defaultValue=QVariant()
static QMutex _mutex
Singleton operation locker.
pixel detector common mode background calculation
Number of reconstucted hits.
Tof to Energy linear interpolation.
display the maps
Returns a the min or max value of a result.
Definition: operations.h:1704
calculate the autocorrelation of an image in radial coordinates
Covariance map.
decreased offset correction
acqiris channel waveform.
Definition: waveform.h:45
load data from binary dump into 2DHistogram
Definition: rankfilter.h:111
Threshold result based upon information from another result.
Definition: operations.h:578
transform kartesian to poloar coordinates
Definition: alignment.h:171
rotate, transpose, invert axis on 2d result.
return the input
Definition: operations.h:349
file contains specialized class that do the settings for cass
std::tr1::shared_ptr< ProcessorManager > shared_pointer
a shared pointer of this class
static void releaseDetector(const id_type &id)
release the detector of all helpers that is blocked for the event
output of 2d histograms into the cbf.
split level of the colesced pixels (hits) of CCD's.
static shared_pointer::element_type & reference()
return a reference to this instance
declaration of pp1001 (hdf5_converter)
returns a list of local extreme points in a 1D result
Definition: operations.h:2376
pixel detector calibrations
retrieval of Epics data.
Definition: machine_data.h:253
retrieve photonenergy.
Definition: machine_data.h:477
get the local background from image.
Definition: hitfinder.h:47
Projection of 2d result.
Definition: operations.h:645
retrieve the eventId from event
Definition: machine_data.h:156
root file converter
clear result
Definition: operations.h:1748
result summing.
Definition: operations.h:1190
containing the class to calculate the fast fourier transform
find center of Mass of 1D result in a user given range
Definition: operations.h:2172
std::string name_t
define the name type
Definition: processor.h:46
contains a logger for cass
std::tr1::shared_ptr< Processor > shared_pointer
a shared pointer of this
Definition: processor.h:43
convert cspad 2d histogram into a quasi oriented layout
detector hits values.
Tof to Energy linear interpolation and correct from 0d histogram.
find bragg peaks and store them in list
Definition: hitfinder.h:387
processors to calculate partical covariance
containing the class to calculate the autocorrelation of a 2d histogram
Number of Signals in MCP Waveform.
Particle value.
retrieve beamline spectrometer data
Definition: machine_data.h:207
processors to generate a test image
Subset result.
Definition: operations.h:1657
process untreated frame with mask
beginGroup(const QString &prefix)
file contains declaration of processors that extract information from the beamline and epics data...
file contains the processor specific for coltrims analysis
return the statistic values of all bins of a result
Definition: operations.h:1975
Threshold result.
Definition: operations.h:483
Check whether result is in range.
Definition: operations.h:255
Tripple coincidence spectra.
Deadtime between two consecutive anode signals.
Constant Value processor.
Definition: operations.h:301