]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONRegionalTriggerConfig.cxx
Add option to run on some local files with test mode using the alien plugin
[u/mrichter/AliRoot.git] / MUON / AliMUONRegionalTriggerConfig.cxx
CommitLineData
92c23b09 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// $MpId: AliMpTrigger.cxx,v 1.4 2006/05/24 13:58:52 ivana Exp $
18
19//-----------------------------------------------------------------------------
20// Class AliMUONRegionalTriggerConfig
21// --------------------
22// The class defines the configuration of regional trigger crate
23// Author: Ch. Finck, Subatech Nantes
24//-----------------------------------------------------------------------------
25
26#include "AliMUONRegionalTriggerConfig.h"
27#include "AliMUONTriggerCrateConfig.h"
28#include "AliMpConstants.h"
92c23b09 29#include "AliMpHelper.h"
630711ed 30#include "AliMpExMapIterator.h"
5cc125b2 31#include "AliMpRegionalTrigger.h"
92c23b09 32#include "AliLog.h"
33
34#include <TArrayI.h>
35#include <Riostream.h>
36#include <TClass.h>
37#include <TSystem.h>
113ad708 38#include <TList.h>
92c23b09 39
40
b80faac0 41using std::cout;
42using std::endl;
43using std::ifstream;
44using std::ios;
92c23b09 45/// \cond CLASSIMP
46ClassImp(AliMUONRegionalTriggerConfig)
47/// \endcond
48
49
50//______________________________________________________________________________
51AliMUONRegionalTriggerConfig::AliMUONRegionalTriggerConfig()
52 : TObject(),
630711ed 53 fTriggerCrates()
92c23b09 54{
55/// Standard constructor
56
57 fTriggerCrates.SetOwner(true);
58 fTriggerCrates.SetSize(AliMpConstants::LocalBoardNofChannels());
59}
60
61//______________________________________________________________________________
62AliMUONRegionalTriggerConfig::AliMUONRegionalTriggerConfig(const AliMUONRegionalTriggerConfig& rhs)
63 : TObject(rhs),
64 fTriggerCrates(rhs.fTriggerCrates)
65{
66/// Copy constructor
67}
68
69//______________________________________________________________________________
70AliMUONRegionalTriggerConfig& AliMUONRegionalTriggerConfig::operator=(const AliMUONRegionalTriggerConfig& rhs)
71{
72/// Assignment operator
73
74 // check assignment to self
75 if (this == &rhs) return *this;
76
77 // base class assignment
78 TObject::operator=(rhs);
79
80 // assignment operator
81 fTriggerCrates = rhs.fTriggerCrates;
82
83 return *this;
84}
85
86//______________________________________________________________________________
87AliMUONRegionalTriggerConfig::~AliMUONRegionalTriggerConfig()
88{
89/// Destructor
90}
91
92//
93// public methods
94//
95
96//______________________________________________________________________________
97Int_t AliMUONRegionalTriggerConfig::ReadData(const TString& fileName)
98{
5cc125b2 99 /// Load the Regional trigger from ASCII data file
92c23b09 100
5cc125b2 101 // Read first data contained in mapping object
102 //
103 AliMpRegionalTrigger mpRegionalTrigger;
104 mpRegionalTrigger.SetTriggerCratesOwner(kFALSE);
105 if ( ! mpRegionalTrigger.ReadData(fileName) ) {
106 AliErrorStream()
107 << "Reading mapping regional trigger from file " << fileName.Data() << " failed."
108 << endl;
109 return 0;
110 }
111
112 // Fill calibration object from mapping object
113 //
114 TIterator* it = mpRegionalTrigger.CreateCrateIterator();
115 AliMpTriggerCrate* mpTriggerCrate;
116 while ( ( mpTriggerCrate = (AliMpTriggerCrate*)it->Next() ) ) {
117 fTriggerCrates.Add(
118 mpTriggerCrate->GetName(), new AliMUONTriggerCrateConfig(mpTriggerCrate));
119 }
120 delete it;
121
122 //
123
124 // Read remaining calibration data from file
125 //
126 ifstream in(fileName.Data(), ios::in);
127 if ( ! in.good() ) {
113ad708 128 AliErrorStream()
129 << "Local Trigger Board Mapping File " << fileName.Data() << " not found" << endl;
130 return 0;
92c23b09 131 }
132
5cc125b2 133 UShort_t mask;
134 Int_t mode, coincidence;
135 Int_t nofBoards;
136 char line[80];
137
138 // decode file and store in objects
139 while (!in.eof())
140 {
141 // Get name
142 in.getline(line,80);
143 if (!strlen(line)) break;
144 TString crateName(AliMpHelper::Normalize(line));
145
146 in.getline(line,80);
147
148 // read mode
149 in.getline(line,80);
150 sscanf(line,"%d",&mode);
151
152 // read coincidence
153 in.getline(line,80);
154 sscanf(line,"%d",&coincidence);
155
156 // read mask
157 in.getline(line,80);
158 sscanf(line,"%hx",&mask);
159
160 // read # local board
161 in.getline(line,80);
162 sscanf(line,"%d",&nofBoards);
163
164 AliMUONTriggerCrateConfig* crateConfig
165 = (AliMUONTriggerCrateConfig*)(fTriggerCrates.GetValue(crateName.Data()));
166
167 // This should never happen, but let's test it anyway
168 if ( ! crateConfig ) {
113ad708 169 AliErrorStream()
5cc125b2 170 << "Cannot find AliMUONTriggerCrateConfig " << crateName.Data() << endl;
113ad708 171 return 0;
5cc125b2 172 }
173
174 crateConfig->SetMode(mode);
175 crateConfig->SetCoinc(coincidence);
176 crateConfig->SetMask(mask);
177
178 // Skipp local board data
179 for ( Int_t i = 0; i < 3*nofBoards; ++i )
180 in.getline(line,80);
181 }
182
183 return fTriggerCrates.GetSize();
92c23b09 184}
185
92c23b09 186//______________________________________________________________________________
187AliMUONTriggerCrateConfig* AliMUONRegionalTriggerConfig::FindTriggerCrate(TString name,
113ad708 188 Bool_t warn) const
189{
92c23b09 190 /// Return trigger crate with given name
191
192 AliMUONTriggerCrateConfig* crate
193 = (AliMUONTriggerCrateConfig*) fTriggerCrates.GetValue(name.Data());
194
195 if ( ! crate && warn ) {
196 AliErrorStream()
197 << "Trigger crate with name = " << name.Data() << " not defined." << endl;
198 }
199
200 return crate;
201}
202
203//______________________________________________________________________________
204Int_t AliMUONRegionalTriggerConfig::GetNofTriggerCrates() const
205{
206 /// Return number of trigger crates
207
208 return fTriggerCrates.GetSize();
209}
210
211//______________________________________________________________________________
630711ed 212TIterator*
213AliMUONRegionalTriggerConfig::CreateCrateIterator() const
92c23b09 214{
630711ed 215 /// Return trigger crates iterator
216 return fTriggerCrates.CreateIterator();
92c23b09 217}
218
219
220
221