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 AliMpRegionalTriggerReader
21 // --------------------
22 // The class to read the regional trigger crate files
23 // Author: Ch. Finck, Subatech Nantes
24 //-----------------------------------------------------------------------------
26 #include "AliMpRegionalTriggerReader.h"
27 #include "AliMpTriggerCrate.h"
28 #include "AliMpLocalBoard.h"
29 #include "AliMUONRegionalTriggerConfig.h"
30 #include "AliMUONTriggerCrateConfig.h"
31 #include "AliMpConstants.h"
32 #include "AliMpFiles.h"
33 #include "AliMpHelper.h"
34 #include "AliMpExMap.h"
39 #include <TObjArray.h>
40 #include <Riostream.h>
46 ClassImp(AliMpRegionalTriggerReader)
50 //______________________________________________________________________________
51 AliMpRegionalTriggerReader::AliMpRegionalTriggerReader()
57 //______________________________________________________________________________
58 AliMpRegionalTriggerReader::~AliMpRegionalTriggerReader()
67 //______________________________________________________________________________
68 Int_t AliMpRegionalTriggerReader::ReadData(TList& list, istream& in)
70 /// Load the Regional trigger from ASCII data files
77 AliMpExMap* triggerCrates = 0x0;
78 AliMpExMap* localBoardMap = 0x0;
79 TObjArray* localBoardArray = 0x0;
81 // common trigger crate map for mapping/config
82 triggerCrates = static_cast<AliMpExMap*> (list.At(0));
84 Bool_t mapping = false;
86 if (list.GetSize() == 3)
89 localBoardMap = static_cast<AliMpExMap*> (list.At(1));
90 localBoardArray = static_cast<TObjArray*> (list.At(2));
93 AliMpLocalBoard* board = 0x0;
94 AliMpTriggerCrate* crate = 0x0;
95 AliMUONTriggerCrateConfig* crateConfig = 0x0;
97 Int_t localBoardId = 0;
99 UShort_t crateId, mask;
100 Int_t mode, coincidence;
104 // decode file and store in objects
108 if (!strlen(line)) break;
109 TString crateName(AliMpHelper::Normalize(line));
112 sscanf(line,"%hx",&crateId);
116 sscanf(line,"%d",&mode);
120 sscanf(line,"%d",&coincidence);
124 sscanf(line,"%hx",&mask);
126 // read # local board
128 sscanf(line,"%d",&nofBoards);
132 crate = (AliMpTriggerCrate*)(triggerCrates->GetValue(crateName.Data()));
135 crate = new AliMpTriggerCrate(crateName.Data(), crateId);
136 triggerCrates->Add(crateName.Data(), crate);
141 crateConfig = (AliMUONTriggerCrateConfig*)(triggerCrates->GetValue(crateName.Data()));
144 crateConfig = new AliMUONTriggerCrateConfig(crateName.Data(), crateId, mask, mode, coincidence);
145 triggerCrates->Add(crateName.Data(), crateConfig);
149 Char_t localBoardName[20];
153 for ( Int_t i = 0; i < nofBoards; ++i )
156 sscanf(line,"%02d %s %03d %03x",&slot,localBoardName,&localBoardId,&switches);
159 board = new AliMpLocalBoard(localBoardId, localBoardName, slot);
160 board->SetSwitch(switches);
161 board->SetCrate(crateName);
163 if (localBoardId > AliMpConstants::NofLocalBoards())
164 board->SetNotified(false); // copy cards
166 crate->AddLocalBoard(localBoardId);
170 crateConfig->AddLocalBoard(localBoardId);
173 // add list of DEs for local board
178 TString tmp(AliMpHelper::Normalize(line));
179 AliMpHelper::DecodeName(tmp,' ',listInt);
180 for (Int_t ii = 0; ii < listInt.GetSize(); ++ii) {
181 if ( listInt[ii] ) board->AddDE(listInt[ii]);
185 // set copy number and transverse connector
189 TString tmp1 = AliMpHelper::Normalize(line);
190 AliMpHelper::DecodeName(tmp1,' ',listInt);
192 board->SetInputXfrom(listInt[0]);
193 board->SetInputXto(listInt[1]);
195 board->SetInputYfrom(listInt[2]);
196 board->SetInputYto(listInt[3]);
198 board->SetTC(listInt[4]);
200 // add local board into array
201 localBoardArray->AddAt(board,board->GetId());
202 localBoardMap->Add(board->GetId(),board);
208 return triggerCrates->GetSize();