Implementation of Trigger simulation (Raphael Tieulent)
[u/mrichter/AliRoot.git] / VZERO / AliVZERODataFEE.cxx
CommitLineData
e311315a 1
2/**************************************************************************
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * *
5 * Author: The ALICE Off-line Project. *
6 * Contributors are mentioned in the code where appropriate. *
7 * *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
16
17
18// Simulate the VZERO Trigger response
19// Use FEE parameters stored in Database
20// Can work on real data or in simulation
21#include <TTimeStamp.h>
22#include <TObjString.h>
23
24#include "AliDCSValue.h"
25#include "AliLog.h"
26#include "AliVZERODataFEE.h"
27
28//ClassImp(AliVZERODataFEE)
29
30//_____________________________________________________________________________
31AliVZERODataFEE::AliVZERODataFEE() :
32 TObject(),
33 fRun(0),
34 fStartTime(0),
35 fEndTime(0),
36 fIsProcessed(kFALSE),
37 fParameters(NULL)
38{
39 // Default constructor
40}
41
42//_____________________________________________________________________________
43AliVZERODataFEE::AliVZERODataFEE(Int_t nRun, UInt_t startTime, UInt_t endTime) :
44 TObject(),
45 fRun(nRun),
46 fStartTime(startTime),
47 fEndTime(endTime),
48 fIsProcessed(kFALSE),
49 fParameters(new TMap())
50{
51 AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
52 TTimeStamp(startTime).AsString(),
53 TTimeStamp(endTime).AsString()));
54 fParameters->SetOwnerValue();
55 Init();
56}
57//________________________________________________________________
58AliVZERODataFEE::AliVZERODataFEE (const AliVZERODataFEE& ) :
59 TObject(),
60 fRun(0),
61 fStartTime(0),
62 fEndTime(0),
63 fIsProcessed(kFALSE),
64 fParameters(NULL)
65{
66
67 AliInfo("Not Implemented");
68
69}
70//________________________________________________________________
71AliVZERODataFEE &AliVZERODataFEE::operator= (const AliVZERODataFEE& )
72{
73 AliInfo("Not Implemented");
74 return *this;
75}
76
77//_____________________________________________________________________________
78AliVZERODataFEE::~AliVZERODataFEE()
79{
80 delete fAliasNames;
81 delete fParameters;
82}
83
84//_____________________________________________________________________________
85void AliVZERODataFEE::Init(){
86 // initialization of DCS aliases
87 int iAlias = 0;
88
89 // CCIU Parameters
90
91 fAliasNames[iAlias++] = "V00/FEE/CCIU/BBAThreshold";
92 fAliasNames[iAlias++] = "V00/FEE/CCIU/BBCThreshold";
93 fAliasNames[iAlias++] = "V00/FEE/CCIU/BGAThreshold";
94 fAliasNames[iAlias++] = "V00/FEE/CCIU/BGCThreshold";
95 fAliasNames[iAlias++] = "V00/FEE/CCIU/BBAForBGThreshold";
96 fAliasNames[iAlias++] = "V00/FEE/CCIU/BBCForBGThreshold";
97 fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0AThrLow";
98 fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0AThrHigh";
99 fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0CThrLow";
100 fAliasNames[iAlias++] = "V00/FEE/CCIU/CentralityV0CThrHigh";
101 fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0AThrLow";
102 fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0AThrHigh";
103 fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0CThrLow";
104 fAliasNames[iAlias++] = "V00/FEE/CCIU/MultV0CThrHigh";
105 for(int i=1;i<=5;i++) {
106 fAliasNames[iAlias] = "V00/FEE/CCIU/TriggerSelect";
107 fAliasNames[iAlias++] += Form("%d",i);
108 }
109
110 // CIU Parameters
111
112 for(int iCIU = 0; iCIU<8 ; iCIU++){
113 for(int iParam=0; iParam<kNCIUParam;iParam++){
114 fAliasNames[iAlias] = "V00/FEE/";
115 fAliasNames[iAlias] += Form("CIU%d/",iCIU+1);
116
117 fAliasNames[iAlias] += GetFEEParamName(iParam);
118 iAlias++;
119 }
120 for(int iParam=kNCIUParam; iParam<kNCIUParam+kNChannelParam;iParam++){
121 for(int iCh=1;iCh<=8;iCh++){
122 fAliasNames[iAlias] = "V00/FEE/";
123 fAliasNames[iAlias] += Form("CIU%d/",iCIU+1);
124
125 fAliasNames[iAlias] += GetFEEParamName(iParam);
126 fAliasNames[iAlias] += Form("%d",iCh);
127
128 iAlias++;
129 }
130 }
131
132 }
133
134 if(iAlias!=kNAliases)
135 AliError(Form("Number of FEE Aliases defined not correct"));
136
137}
138//_____________________________________________________________________________
139void AliVZERODataFEE::ProcessData(TMap& aliasMap){
140
141 if(!(fAliasNames[0])) Init();
142
143 TObjArray *aliasArr;
144 AliDCSValue* aValue;
145
146 // starting loop on aliases
147 for(int iAlias=0; iAlias<kNAliases; iAlias++){
148
149 aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[iAlias].Data());
150 if(!aliasArr){
151 AliError(Form("Alias %s not found!", fAliasNames[iAlias].Data()));
152 return;
153 }
154
155 if(aliasArr->GetEntries()<1){
156 AliError(Form("Alias %s has no entries!", fAliasNames[iAlias].Data()));
157 continue;
158 }
159
160 TIter iterarray(aliasArr);
161
162 AliDCSValue * lastVal;
163 while((aValue = (AliDCSValue*) iterarray.Next())) lastVal = aValue; // Take only the last value
164
165 //AliInfo(Form("%s %f",fAliasNames[iAlias].Data(), val));
166 fParameters->Add(new TObjString(fAliasNames[iAlias].Data()),lastVal);
167
168 }
169
170 // calculate mean and rms of the first two histos
171 // and convert index to aliroot channel
172
173 fIsProcessed=kTRUE;
174
175}
176//_____________________________________________________________________________
177
178TString AliVZERODataFEE::GetFEEParamName(Int_t iParam){
179// Return the name of the FEE Parameter iParam
180 TString Result;
181 if(iParam>kNCIUParam + kNChannelParam -1) {
182 AliError(Form("Requesting FEE parameter number %d. Max parameter number is : %d",iParam,kNCIUParam + kNChannelParam-1));
183 return Result;
184 }
185 switch (iParam) {
186 case 0: Result = "Clk1Win1"; break;
187 case 1: Result = "Clk2Win1"; break;
188 case 2: Result = "Clk1Win2"; break;
189 case 3: Result = "Clk2Win2"; break;
190 case 4: Result = "DelayClk1Win1"; break;
191 case 5: Result = "DelayClk2Win1"; break;
192 case 6: Result = "DelayClk1Win2"; break;
193 case 7: Result = "DelayClk2Win2"; break;
194 case 8: Result = "LatchWin1"; break;
195 case 9: Result = "LatchWin2"; break;
196 case 10: Result = "ResetWin1"; break;
197 case 11: Result = "ResetWin2"; break;
198 case 12: Result = "PedestalSubtraction"; break;
199 case 13: Result = "EnableCharge"; break;
200 case 14: Result = "EnableTiming"; break;
201 case 15: Result = "PedEven"; break;
202 case 16: Result = "PedOdd"; break;
203 case 17: Result = "PedCutEven"; break;
204 case 18: Result = "PedCutOdd"; break;
205 case 19: Result = "DelayHit"; break;
206 case 20: Result = "DiscriThr"; break;
207 }
208 return Result;
209}
210
211void AliVZERODataFEE::PrintAliases(){
212 for(int i=0;i<kNAliases;i++) AliInfo(Form("%s",fAliasNames[i].Data()));
213}