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 AliMUONRegionalTriggerConfig
21 // --------------------
22 // The class defines the configuration of regional trigger crate
23 // Author: Ch. Finck, Subatech Nantes
24 //-----------------------------------------------------------------------------
26 #include "AliMUONRegionalTriggerConfig.h"
27 #include "AliMUONTriggerCrateConfig.h"
28 #include "AliMpConstants.h"
29 #include "AliMpHelper.h"
30 #include "AliMpExMapIterator.h"
31 #include "AliMpRegionalTrigger.h"
35 #include <Riostream.h>
46 ClassImp(AliMUONRegionalTriggerConfig)
50 //______________________________________________________________________________
51 AliMUONRegionalTriggerConfig::AliMUONRegionalTriggerConfig()
55 /// Standard constructor
57 fTriggerCrates.SetOwner(true);
58 fTriggerCrates.SetSize(AliMpConstants::LocalBoardNofChannels());
61 //______________________________________________________________________________
62 AliMUONRegionalTriggerConfig::AliMUONRegionalTriggerConfig(const AliMUONRegionalTriggerConfig& rhs)
64 fTriggerCrates(rhs.fTriggerCrates)
69 //______________________________________________________________________________
70 AliMUONRegionalTriggerConfig& AliMUONRegionalTriggerConfig::operator=(const AliMUONRegionalTriggerConfig& rhs)
72 /// Assignment operator
74 // check assignment to self
75 if (this == &rhs) return *this;
77 // base class assignment
78 TObject::operator=(rhs);
80 // assignment operator
81 fTriggerCrates = rhs.fTriggerCrates;
86 //______________________________________________________________________________
87 AliMUONRegionalTriggerConfig::~AliMUONRegionalTriggerConfig()
96 //______________________________________________________________________________
97 Int_t AliMUONRegionalTriggerConfig::ReadData(const TString& fileName)
99 /// Load the Regional trigger from ASCII data file
101 // Read first data contained in mapping object
103 AliMpRegionalTrigger mpRegionalTrigger;
104 mpRegionalTrigger.SetTriggerCratesOwner(kFALSE);
105 if ( ! mpRegionalTrigger.ReadData(fileName) ) {
107 << "Reading mapping regional trigger from file " << fileName.Data() << " failed."
112 // Fill calibration object from mapping object
114 TIterator* it = mpRegionalTrigger.CreateCrateIterator();
115 AliMpTriggerCrate* mpTriggerCrate;
116 while ( ( mpTriggerCrate = (AliMpTriggerCrate*)it->Next() ) ) {
118 mpTriggerCrate->GetName(), new AliMUONTriggerCrateConfig(mpTriggerCrate));
124 // Read remaining calibration data from file
126 ifstream in(fileName.Data(), ios::in);
129 << "Local Trigger Board Mapping File " << fileName.Data() << " not found" << endl;
134 Int_t mode, coincidence;
138 // decode file and store in objects
143 if (!strlen(line)) break;
144 TString crateName(AliMpHelper::Normalize(line));
150 sscanf(line,"%d",&mode);
154 sscanf(line,"%d",&coincidence);
158 sscanf(line,"%hx",&mask);
160 // read # local board
162 sscanf(line,"%d",&nofBoards);
164 AliMUONTriggerCrateConfig* crateConfig
165 = (AliMUONTriggerCrateConfig*)(fTriggerCrates.GetValue(crateName.Data()));
167 // This should never happen, but let's test it anyway
168 if ( ! crateConfig ) {
170 << "Cannot find AliMUONTriggerCrateConfig " << crateName.Data() << endl;
174 crateConfig->SetMode(mode);
175 crateConfig->SetCoinc(coincidence);
176 crateConfig->SetMask(mask);
178 // Skipp local board data
179 for ( Int_t i = 0; i < 3*nofBoards; ++i )
183 return fTriggerCrates.GetSize();
186 //______________________________________________________________________________
187 AliMUONTriggerCrateConfig* AliMUONRegionalTriggerConfig::FindTriggerCrate(TString name,
190 /// Return trigger crate with given name
192 AliMUONTriggerCrateConfig* crate
193 = (AliMUONTriggerCrateConfig*) fTriggerCrates.GetValue(name.Data());
195 if ( ! crate && warn ) {
197 << "Trigger crate with name = " << name.Data() << " not defined." << endl;
203 //______________________________________________________________________________
204 Int_t AliMUONRegionalTriggerConfig::GetNofTriggerCrates() const
206 /// Return number of trigger crates
208 return fTriggerCrates.GetSize();
211 //______________________________________________________________________________
213 AliMUONRegionalTriggerConfig::CreateCrateIterator() const
215 /// Return trigger crates iterator
216 return fTriggerCrates.CreateIterator();