]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONOccupancySubprocessor.cxx
Possibility to vary the cos(PA) cut
[u/mrichter/AliRoot.git] / MUON / AliMUONOccupancySubprocessor.cxx
CommitLineData
7eafe398 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
18#include "AliMUONOccupancySubprocessor.h"
19
20#include "AliCDBMetaData.h"
21#include "AliMUON2DMap.h"
22#include "AliMUONPreprocessor.h"
23#include "AliMUONTrackerIO.h"
24#include "TObjString.h"
25#include "TSystem.h"
26
27//-----------------------------------------------------------------------------
28/// \class AliMUONOccupancySubprocessor
29///
30/// Implementation of AliMUONVSubprocessor class to deal with MUON TRK occupancy.
31///
32/// Values to compute the occupancy are read in from an ascii file,
33/// with the format : \n
34///---------------------------------------------------------------------------\n
35/// BUS_PATCH MANU_ADDR SUM_N NEVENTS
36///---------------------------------------------------------------------------\n
37///
38/// \author L. Aphecetche
39//-----------------------------------------------------------------------------
40
41/// \cond CLASSIMP
42ClassImp(AliMUONOccupancySubprocessor)
43/// \endcond
44
45//_____________________________________________________________________________
46AliMUONOccupancySubprocessor::AliMUONOccupancySubprocessor(AliMUONPreprocessor* master)
47: AliMUONVSubprocessor(master,"Occupancy","Upload MUON Tracker occupancy to OCDB"),
48fOccupancyMap(0x0)
49{
50 /// Default ctor
51}
52
53//_____________________________________________________________________________
54AliMUONOccupancySubprocessor::~AliMUONOccupancySubprocessor()
55{
56 /// dtor
57 delete fOccupancyMap;
58}
59
60//_____________________________________________________________________________
6c870207 61Bool_t
7eafe398 62AliMUONOccupancySubprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
63{
64 /// When starting a new run, reads in the occupancy ASCII files.
65
66 const Int_t kSystem = AliMUONPreprocessor::kDAQ;
67 const char* kId = "OCCUPANCY";
68
69 delete fOccupancyMap;
70 fOccupancyMap = new AliMUON2DMap(kTRUE);
71
1130977f 72 Master()->Log(Form("Reading occupancy file for Run %d startTime %u endTime %u",
7eafe398 73 run,startTime,endTime));
74
75 TList* sources = Master()->GetFileSources(kSystem,kId);
76 TIter next(sources);
77 TObjString* o(0x0);
78 Int_t n(0);
79
80 while ( ( o = static_cast<TObjString*>(next()) ) )
81 {
82 TString fileName(Master()->GetFile(kSystem,kId,o->GetName()));
83 Int_t ok = ReadFile(fileName.Data());
33d94e07 84 if ( ok>0 || ok == AliMUONTrackerIO::kNoInfoFile )
7eafe398 85 {
86 n += ok;
87 }
88 }
89
6c870207 90 delete sources;
91
7eafe398 92 if (!n)
93 {
94 Master()->Log("Failed to read any occupancy");
95 delete fOccupancyMap;
96 fOccupancyMap = 0;
6c870207 97 return kFALSE;
7eafe398 98 }
6c870207 99 return kTRUE;
7eafe398 100}
101
102//_____________________________________________________________________________
103UInt_t
104AliMUONOccupancySubprocessor::Process(TMap* /*dcsAliasMap*/)
105{
106 /// Store the occupancy map into the CDB
107
108 if (!fOccupancyMap)
109 {
110 // this is the only reason to fail for the moment : getting no occupancy
111 // at all.
112 return 1;
113 }
114
33d94e07 115 if ( fOccupancyMap->GetSize() )
116 {
117 Master()->Log("Storing occupancy map");
118
119 AliCDBMetaData metaData;
120 metaData.SetBeamPeriod(0);
121 metaData.SetResponsible("MUON TRK");
122 TString comment("Computed by AliMUONOccupancySubprocessor $Id$");
123 comment.ReplaceAll("$","");
124 metaData.SetComment(comment.Data());
125
126 Bool_t validToInfinity = kFALSE;
127 Bool_t result = Master()->Store("Calib", "OccupancyMap", fOccupancyMap, &metaData, 0, validToInfinity);
128
129 return ( result != kTRUE ); // return 0 if everything is ok.
130 }
131 else
132 {
133 Master()->Log("No occupancy map to store");
134 return 0;
135 }
7eafe398 136}
137
138//_____________________________________________________________________________
139Int_t
140AliMUONOccupancySubprocessor::ReadFile(const char* filename)
141{
142 /// Read the occupancy from an ASCII file. \n
143 /// Return kFALSE if reading was not successfull. \n
144 ///
145
146 TString sFilename(gSystem->ExpandPathName(filename));
147
148 Master()->Log(Form("Reading %s",sFilename.Data()));
149
150 Int_t n = AliMUONTrackerIO::ReadOccupancy(sFilename.Data(),*fOccupancyMap);
151
152 switch (n)
153 {
154 case -1:
155 Master()->Log(Form("Could not open %s",sFilename.Data()));
156 break;
157 }
158
159 return n;
160}
161
162
163//_____________________________________________________________________________
164void
165AliMUONOccupancySubprocessor::Print(Option_t* opt) const
166{
167 /// ouput to screen
168 if (fOccupancyMap) fOccupancyMap->Print("",opt);
169}
170