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 // $MpId: AliMpTrigger.cxx,v 1.4 2006/05/24 13:58:52 ivana Exp $
19 //-----------------------------------------------------------------------------
20 // Class AliMpRegionalTrigger
21 // --------------------
22 // The class defines the properties of regional trigger crate
23 // Author: Ch. Finck, Subatech Nantes
24 //-----------------------------------------------------------------------------
26 #include "AliMpRegionalTrigger.h"
27 #include "AliMpRegionalTriggerReader.h"
28 #include "AliMpExMapIterator.h"
29 #include "AliMpTriggerCrate.h"
30 #include "AliMpLocalBoard.h"
31 #include "AliMpConstants.h"
32 #include "AliMpFiles.h"
33 #include "AliMpDataStreams.h"
34 #include "AliMpHelper.h"
39 #include <Riostream.h>
45 ClassImp(AliMpRegionalTrigger)
49 //______________________________________________________________________________
50 AliMpRegionalTrigger::AliMpRegionalTrigger()
54 fLocalBoardArray(AliMpConstants::TotalNofLocalBoards()+1) // included non-notified boards
56 /// Standard constructor
58 fTriggerCrates.SetOwner(true);
59 fTriggerCrates.SetSize(AliMpConstants::LocalBoardNofChannels());
62 //______________________________________________________________________________
63 AliMpRegionalTrigger::AliMpRegionalTrigger(const AliMpRegionalTrigger& rhs)
65 fTriggerCrates(rhs.fTriggerCrates),
66 fLocalBoardMap(rhs.fLocalBoardMap),
67 fLocalBoardArray(rhs.fLocalBoardArray)
72 //______________________________________________________________________________
73 AliMpRegionalTrigger::AliMpRegionalTrigger(TRootIOCtor* ioCtor)
75 fTriggerCrates(ioCtor),
76 fLocalBoardMap(ioCtor),
79 /// Constructor for I0
82 //______________________________________________________________________________
83 AliMpRegionalTrigger& AliMpRegionalTrigger::operator=(const AliMpRegionalTrigger& rhs)
85 /// Assignment operator
87 // check assignment to self
88 if (this == &rhs) return *this;
90 // base class assignment
91 TObject::operator=(rhs);
93 // assignment operator
94 fTriggerCrates = rhs.fTriggerCrates;
95 fLocalBoardArray = rhs.fLocalBoardArray;
100 //______________________________________________________________________________
101 AliMpRegionalTrigger::~AliMpRegionalTrigger()
111 //______________________________________________________________________________
112 Bool_t AliMpRegionalTrigger::ReadData(istream& in)
114 /// Load the Regional trigger from ASCII data files
115 /// and return its instance
118 list.AddAt(&fTriggerCrates, 0);
119 list.AddAt(&fLocalBoardMap, 1);
120 list.AddAt(&fLocalBoardArray, 2);
122 Int_t status = AliMpRegionalTriggerReader::ReadData(list, in);
126 << "Regional Trigger Mapping File not found" << endl;
141 //______________________________________________________________________________
142 Bool_t AliMpRegionalTrigger::ReadData(const TString& fileName)
144 /// Load the Regional trigger from ASCII data files
145 /// and return its instance
147 if ( fileName != "" ) {
148 AliDebugStream(2) << "Read data from file " << fileName.Data() << endl;
150 TString inFileName(fileName);
151 inFileName = gSystem->ExpandPathName(inFileName.Data());
152 ifstream inFile(inFileName.Data(), ios::in);
153 if ( ! inFile.good() ) {
155 << "Local Trigger Board Mapping File " << fileName.Data() << " not found" << endl;
159 return ReadData(inFile);
162 AliDebugStream(2) << "Read data from stream " << fileName.Data() << endl;
164 = AliMpDataStreams::Instance()
165 ->CreateDataStream(AliMpFiles::LocalTriggerBoardMapping());
167 Bool_t result = ReadData(in);
174 //______________________________________________________________________________
175 AliMpLocalBoard* AliMpRegionalTrigger::FindLocalBoard(Int_t localBoardId,
177 /// Return local board with given Id
179 AliMpLocalBoard* localBoard
180 = static_cast<AliMpLocalBoard*>(fLocalBoardMap.GetValue(localBoardId));
182 if ( ! localBoard && warn ) {
184 << "Loacl board with localBoardId = " << localBoardId << " not found." << endl;
190 //______________________________________________________________________________
191 AliMpTriggerCrate* AliMpRegionalTrigger::FindTriggerCrate(TString name,
193 /// Return trigger crate with given name
195 AliMpTriggerCrate* crate
196 = (AliMpTriggerCrate*) fTriggerCrates.GetValue(name.Data());
198 if ( ! crate && warn ) {
200 << "Trigger crate with name = " << name.Data() << " not defined." << endl;
206 //______________________________________________________________________________
207 Int_t AliMpRegionalTrigger::GetNofTriggerCrates() const
209 /// Return number of trigger crates
211 return fTriggerCrates.GetSize();
214 //______________________________________________________________________________
215 Int_t AliMpRegionalTrigger::GetNofLocalBoards() const
217 /// Return number of local boards
219 return fLocalBoardArray.GetSize();
222 //______________________________________________________________________________
224 AliMpRegionalTrigger::CreateCrateIterator() const
226 /// Create iterator over crates
228 return fTriggerCrates.CreateIterator();
231 //______________________________________________________________________________
233 AliMpRegionalTrigger::CreateLocalBoardIterator() const
235 /// Create iterator over local boards
237 return fLocalBoardArray.MakeIterator();
240 //______________________________________________________________________________
242 AliMpRegionalTrigger::LocalBoardId(Int_t index) const
244 /// Return local board Id for the local boards with a given index
246 AliMpLocalBoard* lb = static_cast<AliMpLocalBoard*>(fLocalBoardArray.At(index));
251 AliError(Form("Could not get local board at index %d",index));