2 /**************************************************************************
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * Author: The ALICE Off-line Project. *
6 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
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>
24 #include "AliDCSValue.h"
26 #include "AliVZERODataFEE.h"
28 //ClassImp(AliVZERODataFEE)
30 //_____________________________________________________________________________
31 AliVZERODataFEE::AliVZERODataFEE() :
39 // Default constructor
42 //_____________________________________________________________________________
43 AliVZERODataFEE::AliVZERODataFEE(Int_t nRun, UInt_t startTime, UInt_t endTime) :
46 fStartTime(startTime),
49 fParameters(new TMap())
51 AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
52 TTimeStamp(startTime).AsString(),
53 TTimeStamp(endTime).AsString()));
54 fParameters->SetOwnerValue();
57 //________________________________________________________________
58 AliVZERODataFEE::AliVZERODataFEE (const AliVZERODataFEE& ) :
67 AliInfo("Not Implemented");
70 //________________________________________________________________
71 AliVZERODataFEE &AliVZERODataFEE::operator= (const AliVZERODataFEE& )
73 AliInfo("Not Implemented");
77 //_____________________________________________________________________________
78 AliVZERODataFEE::~AliVZERODataFEE()
84 //_____________________________________________________________________________
85 void AliVZERODataFEE::Init(){
86 // initialization of DCS aliases
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);
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);
117 fAliasNames[iAlias] += GetFEEParamName(iParam);
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);
125 fAliasNames[iAlias] += GetFEEParamName(iParam);
126 fAliasNames[iAlias] += Form("%d",iCh);
134 if(iAlias!=kNAliases)
135 AliError(Form("Number of FEE Aliases defined not correct"));
138 //_____________________________________________________________________________
139 void AliVZERODataFEE::ProcessData(TMap& aliasMap){
141 if(!(fAliasNames[0])) Init();
146 // starting loop on aliases
147 for(int iAlias=0; iAlias<kNAliases; iAlias++){
149 aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[iAlias].Data());
151 AliError(Form("Alias %s not found!", fAliasNames[iAlias].Data()));
155 if(aliasArr->GetEntries()<1){
156 AliError(Form("Alias %s has no entries!", fAliasNames[iAlias].Data()));
160 TIter iterarray(aliasArr);
162 AliDCSValue * lastVal;
163 while((aValue = (AliDCSValue*) iterarray.Next())) lastVal = aValue; // Take only the last value
165 //AliInfo(Form("%s %f",fAliasNames[iAlias].Data(), val));
166 fParameters->Add(new TObjString(fAliasNames[iAlias].Data()),lastVal);
170 // calculate mean and rms of the first two histos
171 // and convert index to aliroot channel
176 //_____________________________________________________________________________
178 TString AliVZERODataFEE::GetFEEParamName(Int_t iParam){
179 // Return the name of the FEE Parameter iParam
181 if(iParam>kNCIUParam + kNChannelParam -1) {
182 AliError(Form("Requesting FEE parameter number %d. Max parameter number is : %d",iParam,kNCIUParam + kNChannelParam-1));
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;
211 void AliVZERODataFEE::PrintAliases(){
212 for(int i=0;i<kNAliases;i++) AliInfo(Form("%s",fAliasNames[i].Data()));