Line data Source code
1 : /**************************************************************************
2 : * Copyright(c) 1998-2015, 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 :
17 : ///////////////////////////////////////////////////////////////////////////////
18 : // //
19 : // class for CPV calibration. //
20 : // Author: Boris Polichtchouk (Boris.Polichtchouk@cern.ch). //
21 : // Updated: Sergey Evdokimov on 28 Mar 2015
22 : // //
23 : ///////////////////////////////////////////////////////////////////////////////
24 :
25 : #include "AliPHOSCpvCalibData.h"
26 :
27 22 : ClassImp(AliPHOSCpvCalibData)
28 :
29 : //________________________________________________________________
30 3 : AliPHOSCpvCalibData::AliPHOSCpvCalibData() : TNamed()
31 15 : {
32 : // Default constructor
33 3 : Reset();
34 6 : }
35 :
36 : //________________________________________________________________
37 0 : AliPHOSCpvCalibData::AliPHOSCpvCalibData(const char* name)
38 0 : {
39 : // Constructor
40 0 : TString namst = "CalibCPV_";
41 0 : namst += name;
42 0 : SetName(namst.Data());
43 0 : SetTitle(namst.Data());
44 0 : Reset();
45 0 : }
46 :
47 : //________________________________________________________________
48 : AliPHOSCpvCalibData::AliPHOSCpvCalibData(const AliPHOSCpvCalibData& calibda) :
49 0 : TNamed(calibda)
50 0 : {
51 : // copy constructor
52 0 : SetName(calibda.GetName());
53 0 : SetTitle(calibda.GetName());
54 0 : Reset();
55 0 : for(Int_t module=0; module<AliPHOSCpvParam::kNDDL; module++) {
56 0 : for(Int_t column=0; column<AliPHOSCpvParam::kPadPcX; column++) {
57 0 : for(Int_t row=0; row<AliPHOSCpvParam::kPadPcY; row++) {
58 0 : fADCchannelCpv[module][column][row] = calibda.GetADCchannelCpv(module,column,row);
59 0 : fADCpedestalCpv[module][column][row] = calibda.GetADCpedestalCpv(module,column,row);
60 : }
61 : }
62 : }
63 0 : }
64 :
65 : //________________________________________________________________
66 : AliPHOSCpvCalibData &AliPHOSCpvCalibData::operator =(const AliPHOSCpvCalibData& calibda)
67 : {
68 : // assignment operator
69 0 : SetName(calibda.GetName());
70 0 : SetTitle(calibda.GetName());
71 0 : Reset();
72 0 : for(Int_t module=0; module<AliPHOSCpvParam::kNDDL; module++) {
73 0 : for(Int_t column=0; column<AliPHOSCpvParam::kPadPcX; column++) {
74 0 : for(Int_t row=0; row<AliPHOSCpvParam::kPadPcY; row++) {
75 0 : fADCchannelCpv[module][column][row] = calibda.GetADCchannelCpv(module,column,row);
76 0 : fADCpedestalCpv[module][column][row] = calibda.GetADCpedestalCpv(module,column,row);
77 : }
78 : }
79 : }
80 0 : return *this;
81 : }
82 :
83 : //________________________________________________________________
84 : AliPHOSCpvCalibData::~AliPHOSCpvCalibData()
85 0 : {
86 : // Destructor
87 0 : }
88 :
89 : //________________________________________________________________
90 : void AliPHOSCpvCalibData::Reset()
91 : {
92 : // Set all pedestals and all ADC channels to its dummy values.
93 39 : for(Int_t module=0; module<AliPHOSCpvParam::kNDDL; module++) {
94 3870 : for(Int_t column=0; column<AliPHOSCpvParam::kPadPcX; column++) {
95 234240 : for(Int_t row=0; row<AliPHOSCpvParam::kPadPcY; row++) {
96 115200 : fADCpedestalCpv[module][column][row] = 0;
97 115200 : fADCchannelCpv[module][column][row] = 1;
98 : }
99 : }
100 : }
101 :
102 3 : }
103 :
104 : //________________________________________________________________
105 : void AliPHOSCpvCalibData::Print(Option_t *option) const
106 : {
107 : // Print tables of pedestals and ADC channels
108 :
109 0 : if (strstr(option,"ped")) {
110 0 : printf("\n ---- Pedestal values ----\n\n");
111 0 : for (Int_t module=0; module<AliPHOSCpvParam::kNDDL; module++){
112 0 : printf("============== Module %d\n",module+1);
113 0 : for (Int_t column=0; column<AliPHOSCpvParam::kPadPcX; column++){
114 0 : for (Int_t row=0; row<AliPHOSCpvParam::kPadPcY; row++){
115 0 : printf("%4.1f",fADCpedestalCpv[module][column][row]);
116 : }
117 0 : printf("\n");
118 : }
119 : }
120 0 : }
121 :
122 0 : if (strstr(option,"gain")) {
123 0 : printf("\n ---- ADC channel values ----\n\n");
124 0 : for (Int_t module=0; module<AliPHOSCpvParam::kNDDL; module++){
125 0 : printf("============== Module %d\n",module+1);
126 0 : for (Int_t column=0; column<AliPHOSCpvParam::kPadPcX; column++){
127 0 : for (Int_t row=0; row<AliPHOSCpvParam::kPadPcY; row++){
128 0 : printf("%4.1f",fADCchannelCpv[module][column][row]);
129 : }
130 0 : printf("\n");
131 : }
132 : }
133 0 : }
134 0 : }
135 :
136 : //________________________________________________________________
137 : Float_t AliPHOSCpvCalibData::GetADCchannelCpv(Int_t module, Int_t column, Int_t row) const
138 : {
139 : //Return CPV calibration coefficient
140 : //module, column,raw should follow the internal PHOS convention:
141 : //module 1:5, column 1:56, row 1:128.
142 :
143 0 : return fADCchannelCpv[module-1][column-1][row-1];
144 : }
145 :
146 : //________________________________________________________________
147 : Float_t AliPHOSCpvCalibData::GetADCpedestalCpv(Int_t module, Int_t column, Int_t row) const
148 : {
149 : //Return CPV pedestal
150 : //module, column,raw should follow the internal PHOS convention:
151 : //module 1:5, column 1:56, row 1:128.
152 0 : return fADCpedestalCpv[module-1][column-1][row-1];
153 : }
154 :
155 : //________________________________________________________________
156 : void AliPHOSCpvCalibData::SetADCchannelCpv(Int_t module, Int_t column, Int_t row, Float_t value)
157 : {
158 : //Set CPV calibration coefficient
159 : //module, column,raw should follow the internal PHOS convention:
160 : //module 1:5, column 1:56, row 1:128.
161 0 : fADCchannelCpv[module-1][column-1][row-1] = value;
162 0 : }
163 :
164 : //________________________________________________________________
165 : void AliPHOSCpvCalibData::SetADCpedestalCpv(Int_t module, Int_t column, Int_t row, Float_t value)
166 : {
167 : //Set CPV pedestal
168 : //module, column,raw should follow the internal PHOS convention:
169 : //module 1:5, column 1:56, row 1:128.
170 0 : fADCpedestalCpv[module-1][column-1][row-1] = value;
171 0 : }
|