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: AliMpManuGeo.cxx,v 1.5 2006/05/24 13:58:34 ivana Exp $
18 // Category: management
22 // Class that manages the maps manuId<>manuSerial#<>DE
23 // Needed for geometrical calibration gain for manu
24 // Author: Ch. Finck; Subatech Nantes
28 #include "AliMpManuGeo.h"
29 #include "AliMpFiles.h"
30 #include "AliMpHelper.h"
31 #include "AliMpExMap.h"
32 #include "AliMpStationType.h"
33 #include "AliMpDEManager.h"
34 #include "AliMpIntPair.h"
35 #include "AliMpDEIterator.h"
39 #include "Riostream.h"
42 ClassImp(AliMpManuGeo)
46 //_____________________________________________________________________________
47 AliMpManuGeo::AliMpManuGeo()
49 fDeManuToSerialNb(17000),
50 fSerialNbToDeManu(17000)
52 /// Default constructor
55 //_____________________________________________________________________________
56 AliMpManuGeo::~AliMpManuGeo()
60 fDeManuToSerialNb.Delete();
61 fSerialNbToDeManu.Delete();
65 //____________________________________________________________________
66 AliMpIntPair* AliMpManuGeo::GetDetElemManu(Int_t manuSerial)
68 /// getting (DE, manuId) from manu serial number
69 return (AliMpIntPair*) fSerialNbToDeManu.GetValue(manuSerial);
73 //____________________________________________________________________
74 Int_t AliMpManuGeo::GetManuSerial(AliMpIntPair& pair)
76 /// getting manu serial number from (DE, manuId)
78 if ( ! AliMpDEManager::IsValidDetElemId(pair.GetFirst(), true) ) return -1;
80 Long_t it = fDeManuToSerialNb.GetValue(AliMpExMap::GetIndex(pair));
88 //____________________________________________________________________
89 void AliMpManuGeo::ReadGeomManuFiles()
91 /// Read manu serial numbers for all detection elements
94 for ( it.First(); ! it.IsDone(); it.Next() ) {
95 ReadGeomManuFile(it.CurrentDE());
100 //____________________________________________________________________
101 void AliMpManuGeo::ReadGeomManuFile(Int_t idDE)
103 /// Read manu serial numbers for the given detection elements
105 AliMpStationType stationType = AliMpDEManager::GetStationType(idDE);
106 TString detFileName = AliMpDEManager::GetDEName(idDE);
107 TString infile = AliMpFiles::ManuToSerialPath(detFileName, stationType);
109 ifstream in(infile, ios::in);
110 if (!in) AliError(Form("File %s not found.", infile.Data()));
114 while ( in.getline(line,80) ) {
116 if ( line[0] == '#' ) continue;
118 TString tmp(AliMpHelper::Normalize(line));
120 Int_t blankPos = tmp.First(' ');
122 TString sManuId(tmp(0, blankPos));
124 Int_t manuId = atoi(sManuId.Data());
126 TString sManuSerial(tmp(blankPos + 1, tmp.Length()-blankPos));
128 Int_t manuSerial = atoi(sManuSerial.Data());
131 // filling (idDE, manuId) <> manuSerial
132 fDeManuToSerialNb.Add(AliMpExMap::GetIndex(AliMpIntPair(idDE, manuId)), (Long_t)manuSerial);
133 fSerialNbToDeManu.Add((Long_t)manuSerial, (Long_t)new AliMpIntPair(idDE, manuId));