00001 #!/usr/local/bin/python 00002 # 00003 # Copyright 2004 00004 # by 00005 # The Board of Trustees of the 00006 # Leland Stanford Junior University. 00007 # All rights reserved. 00008 # 00009 00010 __facility__ = "Online" 00011 __abstract__ = "GLAST LAT Trigger Engine interface classes" 00012 __author__ = "Jim Panetta <panetta@slac.stanford.edu> SLAC - GLAST I&T" 00013 __date__ = "2/14/04" 00014 __version__ = "$Revision: 2.1 $" 00015 __release__ = "$Name: R04-12-00 $" 00016 __credits__ = "SLAC" 00017 00018 import LATTE.copyright_SLAC 00019 00020 00021 from TrgObject import TrgObject 00022 00023 00024 """TrgEngines: Interface for the Trigger Engine classes""" 00025 00026 00027 class TrgEngines(TrgObject): 00028 """\brief Trigger Engines class definition 00029 A Trigger Engine defines what the Trigger System does when it 00030 detects a triggerable condition within the LAT 00031 """ 00032 def __init__(self): 00033 """\brief TrgEngines constructor 00034 """ 00035 pass 00036 00037 def engine(self, engineNumber): 00038 """\brief Engine 'pure virtual' method 00039 Reference into a list of engines. 00040 \param engineNumber An integer 00041 \return A TrgEngine object 00042 """ 00043 raise NotImplementedError 00044 pass 00045 00046 00047 class TrgEngine(TrgObject): 00048 """\brief Trigger Engine class definition 00049 The user inherits from this class to customize their own Trigger Engines. 00050 The user must satisfy the member function 'request', which returns an 00051 object of type TrgEngineRequest. 00052 The user must satisfy the member function 'prescale', which returns an 00053 integer. 00054 """ 00055 def __init__(self): 00056 """\brief TrgEngine constructor 00057 """ 00058 pass 00059 00060 def prescale(self): 00061 """\brief prescale 'pure virtual' method 00062 00063 \return An integer 00064 """ 00065 raise NotImplementedError 00066 pass 00067 00068 def request(self): 00069 """\brief request 'pure virtual' method 00070 Return the TrgEngineRequest object corresponding to this engine. 00071 \return A TrgEngineRequest object 00072 """ 00073 raise NotImplementedError 00074 pass 00075 00076 def participate(self,conditionsValue): 00077 """\brief participate 'pure virtual' method 00078 Determines whether or not this engine participates when a particular 00079 conditionsValue is satisfied in the GEM. 00080 \param conditionsValue An integer 00081 \return A boolean 00082 """ 00083 raise NotImplementedError 00084 pass 00085 00086 00087 class TrgEngineRequest(TrgObject): 00088 """\brief Trigger Engine Request class definition 00089 The TrgEngineRequest class is used to specify the parameterization 00090 of the Trigger Message associated with a given engine. 00091 00092 See below for concrete examples. 00093 """ 00094 def __init__(self): 00095 """\brief TrgEngineRequest constructor 00096 """ 00097 pass 00098 00099 00100 def fourRange(self): 00101 """\brief fourRange 'virtual' method 00102 Return TRUE if the four-range-readout is enabled, else FALSE. 00103 \return A boolean 00104 """ 00105 return False 00106 00107 def zeroSuppress(self): 00108 """\brief zeroSuppress 'virtual' method 00109 Return TRUE if the zero-suppression is enabled, else FALSE. 00110 \return A boolean 00111 """ 00112 return False 00113 00114 def destination(self): 00115 """\brief destination method 00116 00117 \return An integer 00118 """ 00119 raise NotImplementedError 00120 pass 00121 00122 def marker(self, markerValue = 0): 00123 """\brief marker method 00124 00125 \param markerValue A marker value 00126 \return An integer 00127 """ 00128 return 0 00129 00130 def sequence(self): 00131 """\brief sequence 'pure virtual' method 00132 00133 \return An integer 00134 """ 00135 raise NotImplementedError 00136 pass 00137 00138 class TrgInjectCharge(TrgEngineRequest): 00139 """\brief TrgInjectCharge class definition 00140 00141 Directs a module to send to its Front-End Electronics a command sequence 00142 which is composed only of the CALSTROBE command. This command will not 00143 trigger a readout of the module's Front-End Electronics. 00144 """ 00145 def __init__(self): 00146 """\brief TrgInjectCharge constructor 00147 """ 00148 TrgEngineRequest.__init__(self) 00149 00150 def sequence(self): 00151 """\brief sequence() method 00152 See TrgEngineRequest base class 00153 """ 00154 return 2 00155 00156 class TrgReadout(TrgEngineRequest): 00157 """\brief TrgReadout class definition 00158 00159 Directs a module to send to its Front-End Electronics a command sequence 00160 which is composed only of the TACK command. This command will trigger 00161 a readout of the module's Front-End Electronics. 00162 """ 00163 def __init__(self): 00164 """\brief TrgReadout constructor 00165 """ 00166 TrgEngineRequest.__init__(self) 00167 00168 def sequence(self): 00169 """\brief sequence() method 00170 See TrgEngineRequest base class 00171 """ 00172 return 1 00173 00174 class TrgInjectChargeReadout(TrgEngineRequest): 00175 """\brief Trigger Inject Charge Readout class definition 00176 00177 Directs a module to send to its Front-End Electronics a command sequence 00178 which is composed of a CALSTROBE followed by a TACK command. 00179 This sequence will trigger a readout of the module's Front-End Electronics. 00180 """ 00181 def __init__(self): 00182 """\brief TrgInjectChargeReadout constructor 00183 """ 00184 TrgEngineRequest.__init__(self) 00185 00186 def sequence(self): 00187 """\brief sequence() method 00188 See TrgEngineRequest base class 00189 """ 00190 return 3 00191 00192 class TrgInjectMarker(TrgEngineRequest): 00193 """\brief Trigger Inject Marker class definition 00194 Directs a module to send to its Front-End Electronics a command sequence 00195 which is composed of only a TACK command. This sequence will trigger 00196 a readout of the module's Front-End Electronics. 00197 """ 00198 def __init__(self, marker): 00199 """\brief TrgInjectMarker constructor 00200 """ 00201 TrgEngineRequest.__init__(self) 00202 self.__marker = marker 00203 00204 def sequence(self): 00205 """\brief sequence() method 00206 See TrgEngineRequest base class 00207 """ 00208 return 1 00209 00210 def marker(self): 00211 """\brief marker() method 00212 See TrgEngineRequest base class 00213 """ 00214 return self.__marker 00215 00216