In mapping:
[u/mrichter/AliRoot.git] / MUON / AliMUONRegionalTriggerConfig.cxx
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"
29 #include "AliMpFiles.h"
30 #include "AliMpHelper.h"
31 #include "AliMpExMapIterator.h"
32 #include "AliMpRegionalTriggerReader.h"
33 #include "AliLog.h"
34
35 #include <TArrayI.h>
36 #include <Riostream.h>
37 #include <TClass.h>
38 #include <TSystem.h>
39 #include <TList.h>
40
41
42 /// \cond CLASSIMP
43 ClassImp(AliMUONRegionalTriggerConfig)
44 /// \endcond
45
46
47 //______________________________________________________________________________
48 AliMUONRegionalTriggerConfig::AliMUONRegionalTriggerConfig()
49   : TObject(),
50     fTriggerCrates()
51 {
52 /// Standard constructor
53   
54     fTriggerCrates.SetOwner(true);
55     fTriggerCrates.SetSize(AliMpConstants::LocalBoardNofChannels());
56 }
57
58 //______________________________________________________________________________
59 AliMUONRegionalTriggerConfig::AliMUONRegionalTriggerConfig(const AliMUONRegionalTriggerConfig& rhs)
60   : TObject(rhs),
61     fTriggerCrates(rhs.fTriggerCrates)
62 {
63 /// Copy constructor
64 }  
65
66 //______________________________________________________________________________
67 AliMUONRegionalTriggerConfig& AliMUONRegionalTriggerConfig::operator=(const AliMUONRegionalTriggerConfig& rhs)
68 {
69 /// Assignment operator
70
71   // check assignment to self
72   if (this == &rhs) return *this;
73
74   // base class assignment
75   TObject::operator=(rhs);
76
77   // assignment operator
78   fTriggerCrates = rhs.fTriggerCrates;
79   
80   return *this;
81 }  
82
83 //______________________________________________________________________________
84 AliMUONRegionalTriggerConfig::~AliMUONRegionalTriggerConfig()
85 {
86 /// Destructor
87 }
88
89 //
90 // public methods
91 //
92
93 //______________________________________________________________________________
94 Int_t AliMUONRegionalTriggerConfig::ReadData(const TString& fileName)
95 {
96     /// Load the Regional trigger from ASCII data files
97
98     ifstream inFile(fileName.Data(), ios::in);
99     if ( ! inFile.good() ) {
100         AliErrorStream()
101            << "Local Trigger Board Mapping File " << fileName.Data() << " not found" << endl;
102         return 0;
103     }
104
105     TList list;
106     list.AddAt(&fTriggerCrates,0);
107     
108     Int_t status = AliMpRegionalTriggerReader::ReadData(list, inFile);
109     
110     if (status == -1) {
111         AliErrorStream()
112         << "Regional Trigger configuration File " << fileName.Data() << " not found" << endl;
113         return 0;
114     } 
115     
116     return status;
117 }
118
119 //______________________________________________________________________________
120 AliMUONTriggerCrateConfig* AliMUONRegionalTriggerConfig::FindTriggerCrate(TString name, 
121                                                           Bool_t warn) const  
122 {
123     /// Return trigger crate with given name
124
125     AliMUONTriggerCrateConfig* crate
126     = (AliMUONTriggerCrateConfig*) fTriggerCrates.GetValue(name.Data());
127
128     if ( ! crate && warn ) {
129         AliErrorStream()
130         << "Trigger crate with name = " << name.Data() << " not defined." << endl;
131     }
132
133     return crate;
134 }
135
136 //______________________________________________________________________________
137 Int_t AliMUONRegionalTriggerConfig::GetNofTriggerCrates() const 
138
139     /// Return number of trigger crates
140
141     return fTriggerCrates.GetSize(); 
142 }
143
144 //______________________________________________________________________________
145 TIterator* 
146 AliMUONRegionalTriggerConfig::CreateCrateIterator() const 
147
148   /// Return trigger crates iterator
149   return fTriggerCrates.CreateIterator(); 
150 }
151
152
153
154