Line data Source code
1 : /**************************************************************************
2 : * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 : * *
4 : * Author: The ALICE Off-line Project. *
5 : * Contributors are mentioned in the code where appropriate. *
6 : * *
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 : **************************************************************************/
15 :
16 : /* $Id$ */
17 : // Author: Andrei Gheata, 28/07/2009
18 :
19 : #include "AliTrigEvent.h"
20 :
21 : #include <TClass.h>
22 : #include <TBits.h>
23 : #include <TROOT.h>
24 :
25 12 : ClassImp(AliTrigEvent)
26 :
27 : //==============================================================================
28 : // AliTrigEvent - Base class for generic information exchanged by a trigger
29 : // device. Trigger inputs and outputs are represented and
30 : // handled via AliTrigEvent objects. Trigger events are typically
31 : // wrappers for the information exchanged on a single I/O slot
32 : // or a group of correlated inputs.
33 : //==============================================================================
34 :
35 : //______________________________________________________________________________
36 : AliTrigEvent &AliTrigEvent::operator=(const AliTrigEvent &other)
37 : {
38 : // Assignment operator.
39 0 : if (&other == this) return *this;
40 0 : TNamed::operator=(other);
41 0 : return *this;
42 0 : }
43 : //______________________________________________________________________________
44 : void AliTrigEvent::Activate(Bool_t flag)
45 : {
46 : // Activate/deactivate this signal.
47 0 : TObject::SetBit(kActive, flag);
48 0 : }
49 :
50 12 : ClassImp(AliTrigEventWithMask)
51 :
52 : //______________________________________________________________________________
53 : Bool_t AliTrigEventWithMask::ImportData(AliTrigEvent *source)
54 : {
55 : // Import data from likewise signal.
56 0 : AliTrigEventWithMask *src = (AliTrigEventWithMask *)source;
57 0 : SetValue(src->GetValue());
58 0 : return kTRUE;
59 : }
60 :
61 : //______________________________________________________________________________
62 : void AliTrigEventWithMask::SetValue(TBits *value)
63 : {
64 : // Set the mask value.
65 0 : *fValue = *value;
66 0 : }
67 :
68 : //______________________________________________________________________________
69 : AliTrigEventWithMask::AliTrigEventWithMask(const AliTrigEventWithMask &other)
70 0 : :AliTrigEvent(other),
71 0 : fValue(NULL)
72 0 : {
73 : // Copy constructor.
74 0 : *fValue = *other.fValue;
75 0 : }
76 :
77 : //______________________________________________________________________________
78 : AliTrigEventWithMask &AliTrigEventWithMask::operator=(const AliTrigEventWithMask &other)
79 : {
80 : // Assignment operator.
81 0 : if (&other == this) return *this;
82 0 : AliTrigEvent::operator=(other);
83 0 : *fValue = *other.fValue;
84 0 : return *this;
85 0 : }
86 :
87 12 : ClassImp(AliTrigEventWithObject)
88 :
89 : //______________________________________________________________________________
90 : AliTrigEventWithObject::AliTrigEventWithObject(const char *name,const char *classname)
91 0 : :AliTrigEvent(name),
92 0 : fValue(0),
93 0 : fType("")
94 0 : {
95 : // Normal constructor where a class name is provided for the embedded object.
96 : // If the event is created in this way one will only be able to connect to
97 : // events embedding the same object type (via connectors). If empty string the type
98 : // will be set upon the first call of SetValue.
99 0 : SetType(classname);
100 0 : }
101 :
102 : //______________________________________________________________________________
103 : AliTrigEventWithObject::AliTrigEventWithObject(const AliTrigEventWithObject &other)
104 0 : :AliTrigEvent(other),
105 0 : fValue(NULL),
106 0 : fType(other.fType)
107 0 : {
108 : // Copy constructor.
109 0 : TClass* pClass=TClass::GetClass(fType);
110 0 : if (!pClass) return;
111 0 : fValue = (TObject*)pClass->New();
112 0 : fValue->Copy(*other.fValue);
113 0 : }
114 :
115 : //______________________________________________________________________________
116 : AliTrigEventWithObject &AliTrigEventWithObject::operator=(const AliTrigEventWithObject &other)
117 : {
118 : // Assignment operator.
119 0 : if (&other == this) return *this;
120 0 : AliTrigEvent::operator=(other);
121 0 : fType = other.fType;
122 0 : TClass* pClass=TClass::GetClass(fType);
123 0 : if (!pClass) return *this;
124 0 : fValue = (TObject*)pClass->New();
125 0 : fValue->Copy(*other.fValue);
126 0 : return *this;
127 0 : }
128 :
129 : //______________________________________________________________________________
130 : Bool_t AliTrigEventWithObject::ImportData(AliTrigEvent *source)
131 : {
132 : // Import data from likewise signal.
133 0 : AliTrigEventWithObject *src = (AliTrigEventWithObject *)source;
134 0 : Bool_t done = SetValue(src->GetValue());
135 0 : if (!done) Error("ImportData", "Cannot import object <%s> of class <%s> since event type was set to: <%s>",
136 0 : src->GetValue()->GetName(), src->GetValue()->ClassName(), fType.Data());
137 0 : return done;
138 : }
139 :
140 : //______________________________________________________________________________
141 : Bool_t AliTrigEventWithObject::SetType(const char *classname)
142 : {
143 : // Set the type of this event. Can be done only once.
144 0 : if (!strlen(classname)) return kFALSE;
145 0 : if (!fType.IsNull()) {
146 0 : Error("SetType", "Type for this trigger event already set to: %s", fType.Data());
147 0 : return kFALSE;
148 : }
149 0 : TClass *type = gROOT->GetClass(classname);
150 0 : if (!type) {
151 0 : Error("SetType", "Unknown class %s", classname);
152 0 : return kFALSE;
153 : }
154 0 : fType = classname;
155 0 : return kTRUE;
156 0 : }
157 :
158 : //______________________________________________________________________________
159 : Bool_t AliTrigEventWithObject::SetValue(TObject *value)
160 : {
161 : // Set the current event content. Checks consistency with event type.
162 0 : if (!value) {
163 : // Reset current value.
164 0 : fValue = NULL;
165 0 : return kTRUE;
166 : }
167 : // Set the type if used for the first time.
168 0 : if (!fType) fType = value->ClassName();
169 0 : fValue = value;
170 0 : return kTRUE;
171 0 : }
|