1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 // Class AliVZEROLogicalSignal
18 // ---------------------------
19 // Describes a logical signal in the electronics.
20 // Use it to generate observation windows
21 // which are used by AliVZEROTriggerSimulator class
25 #include "AliVZEROLogicalSignal.h"
27 ClassImp(AliVZEROLogicalSignal)
29 //_____________________________________________________________________________
30 AliVZEROLogicalSignal::AliVZEROLogicalSignal() : TObject(), fStart(0.), fStop(0.)
32 // Default constructor
34 //_____________________________________________________________________________
35 AliVZEROLogicalSignal::AliVZEROLogicalSignal(UShort_t profilClock, UInt_t delay) : TObject(), fStart(0.), fStop(0.)
37 // Constructor using the profilClock and delay parameters comming from the FEE
43 for(int i=0 ; i<5 ; i++) {
44 Int_t shift = (i<4) ? (3-i) : 4;
45 word = (profilClock >> shift) & 0x1;
47 fStart = 5. * (i + 1);
50 if(!word&&up&&!down) {
55 if(!down) fStop = 30.;
57 fStart += delay*1e-2; // Add 10 ps par register unit
60 //_____________________________________________________________________________
61 AliVZEROLogicalSignal::AliVZEROLogicalSignal(const AliVZEROLogicalSignal &signal) :
62 TObject(), fStart(signal.fStart),
68 //_____________________________________________________________________________
69 AliVZEROLogicalSignal::~AliVZEROLogicalSignal(){
73 //_____________________________________________________________________________
74 AliVZEROLogicalSignal& AliVZEROLogicalSignal::operator =
75 (const AliVZEROLogicalSignal& signal)
78 if(&signal == this) return *this;
79 fStart = signal.fStart;
84 //_____________________________________________________________________________
85 AliVZEROLogicalSignal AliVZEROLogicalSignal::operator|(const AliVZEROLogicalSignal& signal) const
87 // Perform the Logical OR of two signals: C = A or B
88 if((fStart>signal.fStop) || (signal.fStart>fStop))
89 AliError(Form("Both signal do not superpose in time.\n Start(A) = %f Stop(A) = %f\n Start(B) = %f Stop(B) = %f",fStart, fStop, signal.fStart,signal.fStop));
91 AliVZEROLogicalSignal result;
92 if(fStart<signal.fStart) result.fStart = fStart;
93 else result.fStart = signal.fStart;
95 if(fStop>signal.fStop) result.fStop = fStop;
96 else result.fStop = signal.fStop;
100 //_____________________________________________________________________________
101 AliVZEROLogicalSignal AliVZEROLogicalSignal::operator&(const AliVZEROLogicalSignal& signal) const
103 // Perform the Logical AND of two signals: C = A and B
104 if((fStart>signal.fStop) || (signal.fStart>fStop))
105 AliError(Form("Both signal do not superpose in time.\n Start(A) = %f Stop(A) = %f\n Start(B) = %f Stop(B) = %f",fStart, fStop, signal.fStart,signal.fStop));
107 AliVZEROLogicalSignal result;
108 if(fStart>signal.fStart) result.fStart = fStart;
109 else result.fStart = signal.fStart;
111 if(fStop<signal.fStop) result.fStop = fStop;
112 else result.fStop = signal.fStop;
117 //_____________________________________________________________________________
118 Bool_t AliVZEROLogicalSignal::IsInCoincidence(Float_t time) const
120 // Check if a signal arriving at the time "time" is in coincidence with the logical signal
121 Bool_t result = kFALSE;
122 if((time>fStart) && (time<fStop)) result = kTRUE;