]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliTriggerInput.cxx
More corrections in return code (trying to make the return code of the GRP private...
[u/mrichter/AliRoot.git] / STEER / AliTriggerInput.cxx
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
18 ///////////////////////////////////////////////////////////////////////////////
19 //
20 //  Class to define a Trigger Input from an specific detector                                                                                           //
21 //
22 //
23 //                        name         description     id mask
24 //    Ej:
25 //      AliTriggerInput( "V0_MB_L0", "VO minimum bias", 0x01 );
26 //      AliTriggerInput( "V0_SC_L0", "VO semi central", 0x02 );
27 //      AliTriggerInput( "V0_C_L0",  "VO central",      0x04 );
28 //
29 //    The name must be globaly unique. Spaces are not allowed.
30 //    As convention should start with detector name then an id
31 //    and the trigger level (L0, L1, L2) separated by "_"
32 //    for valid detector names see AliTriggerCluster::fgkDetectorName
33 //
34 //    A maximun of 60 inputs trigger are allow.
35 //    So, the id mask should set only bit from the position 1 to 60.
36 //
37 ///////////////////////////////////////////////////////////////////////////////
38
39 #include <Riostream.h>
40 #include <TMath.h>
41
42 #include "AliLog.h"
43 #include "AliTriggerInput.h"
44
45 ClassImp( AliTriggerInput )
46
47 Bool_t AliTriggerInput::fgkIsTriggerDetector[AliDAQ::kNDetectors] = {1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,1,1,1,0};
48 const char* AliTriggerInput::fgkCTPDetectorName[AliDAQ::kNDetectors] = {
49   "SPD",
50   "SDD",
51   "SSD",
52   "TPC",
53   "TRD",
54   "TOF",
55   "HMPID",
56   "PHOS",
57   "CPV",
58   "PMD",
59   "MUON_TRK",
60   "MUON_TRG",
61   "FMD",
62   "T0",
63   "V0",
64   "ZDC",
65   "ACORDE",
66   "CTP",
67   "EMCal",
68   "HLT"
69 };
70
71 const char* AliTriggerInput::fgkOfflineModuleName[AliDAQ::kNDetectors] = {
72   "ITS",
73   "ITS",
74   "ITS",
75   "TPC",
76   "TRD",
77   "TOF",
78   "HMPID",
79   "PHOS",
80   "CPV",
81   "PMD",
82   "MUON",
83   "MUON",
84   "FMD",
85   "T0",
86   "VZERO",
87   "ZDC",
88   "ACORDE",
89   "CTP",
90   "EMCAL",
91   "HLT"
92 };
93
94 //_____________________________________________________________________________
95   AliTriggerInput::AliTriggerInput( TString name, TString det, UChar_t level, Int_t signature, Char_t number ):
96     TNamed( name.Data(), det.Data() ),
97     fMask((number >= 0) ? 1 << number : 0 ),
98     fValue(0),
99     fSignature(signature),
100     fLevel(level),
101     fDetectorId(-1),
102     fIsActive(kFALSE)
103 {
104    //  Standard constructor
105    //
106    //    The name must be globaly unique. Spaces are not allowed.
107    //    For valid detector names see AliDAQ::fgkDetectorName
108
109    // Check for valid detector name
110    Int_t iDet = 0;
111    for( iDet = 0; iDet < AliDAQ::kNDetectors; iDet++ ) {
112      if( !fgkIsTriggerDetector[iDet] ) continue;
113       if( det.CompareTo( fgkCTPDetectorName[iDet] ) == 0 ) {
114         fTitle = AliDAQ::DetectorName(iDet);
115         fDetectorId = iDet;
116         break;
117       }
118       if( det.CompareTo( AliDAQ::DetectorName(iDet) ) == 0 ) {
119         fDetectorId = iDet;
120         break;
121       }
122    }
123    if( iDet == AliDAQ::kNDetectors ) {
124       AliError( Form( "%s is not a valid trigger input, it must contain a valid trigger detector name instead of (%s)", name.Data(), det.Data() ) );
125    }
126 }
127
128 //_____________________________________________________________________________
129 void AliTriggerInput::Print( const Option_t* ) const
130 {
131    // Print
132    cout << "Trigger Input:" << endl; 
133    cout << "  Name:        " << GetName() << endl;
134    cout << "  Detector:    " << GetTitle() << "(Id=" << (Int_t)fDetectorId << ")" << endl;
135    cout << "  Level:       " << fLevel << endl;
136    cout << "  Signature:   " << fSignature << endl;
137    cout << "  Number:      " << (Int_t)TMath::Log2(fMask) << endl;
138    if (IsActive())
139      cout << "   Input is active      " << endl;
140    else
141      cout << "   Input is not active  " << endl;
142    if (Status())
143      cout << "   Input is fired      " << endl;
144    else
145      cout << "   Input is not fired  " << endl;
146 }
147
148 //_____________________________________________________________________________
149 TString AliTriggerInput::GetModule() const
150 {
151   // Get the detector module name (in AliRoot simulation sense)
152   TString name = "";
153   if (fDetectorId >= 0 && fDetectorId < AliDAQ::kNDetectors)
154     name = fgkOfflineModuleName[(Int_t)fDetectorId];
155   else
156     AliError(Form("Invalid detector Id (%d)",(Int_t)fDetectorId));
157
158   return name;
159 }