ClassImp(AliPHOSEmcCalibData)
//________________________________________________________________
-AliPHOSEmcCalibData::AliPHOSEmcCalibData()
+AliPHOSEmcCalibData::AliPHOSEmcCalibData():
+ TNamed(),
+ fSampleTimeStep(0)
{
// Default constructor
Reset();
}
//________________________________________________________________
-AliPHOSEmcCalibData::AliPHOSEmcCalibData(const char* name)
+AliPHOSEmcCalibData::AliPHOSEmcCalibData(const char* name):
+ TNamed(),
+ fSampleTimeStep(0)
{
// Constructor
TString namst = "Calib_";
//________________________________________________________________
AliPHOSEmcCalibData::AliPHOSEmcCalibData(const AliPHOSEmcCalibData& calibda) :
- TNamed(calibda)
+ TNamed(calibda),
+ fSampleTimeStep(calibda.fSampleTimeStep)
{
// copy constructor
SetName(calibda.GetName());
SetTitle(calibda.GetName());
- Reset();
+
for(Int_t module=0; module<5; module++) {
for(Int_t column=0; column<56; column++) {
for(Int_t row=0; row<64; row++) {
- fADCchannelEmc[module][column][row] = calibda.GetADCchannelEmc(module,column,row);
- fADCpedestalEmc[module][column][row] = calibda.GetADCpedestalEmc(module,column,row);
+ fADCchannelEmc[module][column][row] = calibda.fADCchannelEmc[module][column][row];
+ fADCpedestalEmc[module][column][row] = calibda.fADCpedestalEmc[module][column][row];
+ fHighLowRatioEmc[module][column][row] = calibda.fHighLowRatioEmc[module][column][row];
+ fTimeShiftEmc[module][column][row] = calibda.fTimeShiftEmc[module][column][row];
+ fAltroOffsets[module][column][row] = calibda.fAltroOffsets[module][column][row];
}
}
}
AliPHOSEmcCalibData &AliPHOSEmcCalibData::operator =(const AliPHOSEmcCalibData& calibda)
{
// assignment operator
- SetName(calibda.GetName());
- SetTitle(calibda.GetName());
- Reset();
- for(Int_t module=0; module<5; module++) {
- for(Int_t column=0; column<56; column++) {
- for(Int_t row=0; row<64; row++) {
- fADCchannelEmc[module][column][row] = calibda.GetADCchannelEmc(module,column,row);
- fADCpedestalEmc[module][column][row] = calibda.GetADCpedestalEmc(module,column,row);
+
+ if(this != &calibda) {
+
+ SetName(calibda.GetName());
+ SetTitle(calibda.GetName());
+
+ for(Int_t module=0; module<5; module++) {
+ for(Int_t column=0; column<56; column++) {
+ for(Int_t row=0; row<64; row++) {
+ fADCchannelEmc[module][column][row] = calibda.fADCchannelEmc[module][column][row];
+ fADCpedestalEmc[module][column][row] = calibda.fADCpedestalEmc[module][column][row];
+ fHighLowRatioEmc[module][column][row] = calibda.fHighLowRatioEmc[module][column][row];
+ fTimeShiftEmc[module][column][row] = calibda.fTimeShiftEmc[module][column][row];
+ fAltroOffsets[module][column][row] = calibda.fAltroOffsets[module][column][row];
+ }
}
}
}
+
return *this;
}
//________________________________________________________________
void AliPHOSEmcCalibData::Reset()
{
- // Set all pedestals and all ADC channels to its default values.
+ // Set all pedestals and all ADC channels to its ideal values = 5. (MeV/ADC)
for (Int_t module=0; module<5; module++){
for (Int_t column=0; column<56; column++){
for (Int_t row=0; row<64; row++){
- fADCpedestalEmc[module][column][row] = 0.005;
- fADCchannelEmc[module][column][row] = 0.0015;
+ fADCpedestalEmc[module][column][row] = 0.;
+ fADCchannelEmc[module][column][row] = 0.005;
+ fHighLowRatioEmc[module][column][row] = 16. ;
+ fTimeShiftEmc[module][column][row] = 0. ;
+ fAltroOffsets[module][column][row] = 0 ;
}
}
}
-
+ fSampleTimeStep=100.e-9 ; //100 ns
}
//________________________________________________________________
}
}
}
+
+ if (strstr(option,"hilo")) {
+ printf("\n ---- EMC High/Low ratio ----\n\n");
+ for (Int_t module=0; module<5; module++){
+ printf("============== Module %d\n",module+1);
+ for (Int_t column=0; column<56; column++){
+ for (Int_t row=0; row<64; row++){
+ printf("%4.1f",fHighLowRatioEmc[module][column][row]);
+ }
+ printf("\n");
+ }
+ }
+ }
+ if (strstr(option,"time")) {
+ printf("\n ---- EMC t0 shifts ----\n\n");
+ for (Int_t module=0; module<5; module++){
+ printf("============== Module %d\n",module+1);
+ for (Int_t column=0; column<56; column++){
+ for (Int_t row=0; row<64; row++){
+ printf("%6.3e",fTimeShiftEmc[module][column][row]);
+ }
+ printf("\n");
+ }
+ }
+ }
+ if (strstr(option,"altro")) {
+ printf("\n ---- EMC altro offsets ----\n\n");
+ for (Int_t module=0; module<5; module++){
+ printf("============== Module %d\n",module+1);
+ for (Int_t column=0; column<56; column++){
+ for (Int_t row=0; row<64; row++){
+ printf("%5d",fAltroOffsets[module][column][row]);
+ }
+ printf("\n");
+ }
+ }
+ }
}
+//________________________________________________________________
Float_t AliPHOSEmcCalibData::GetADCchannelEmc(Int_t module, Int_t column, Int_t row) const
{
+ //Return EMC calibration coefficient
//module, column,raw should follow the internal PHOS convention:
//module 1:5, column 1:56, row 1:64
return fADCchannelEmc[module-1][column-1][row-1];
}
+//________________________________________________________________
Float_t AliPHOSEmcCalibData::GetADCpedestalEmc(Int_t module, Int_t column, Int_t row) const
{
+ //Return EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+
return fADCpedestalEmc[module-1][column-1][row-1];
}
+//________________________________________________________________
+Float_t AliPHOSEmcCalibData::GetHighLowRatioEmc(Int_t module, Int_t column, Int_t row) const
+{
+ //Return EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+
+ return fHighLowRatioEmc[module-1][column-1][row-1];
+}
+
+//________________________________________________________________
+Float_t AliPHOSEmcCalibData::GetTimeShiftEmc(Int_t module, Int_t column, Int_t row) const
+{
+ //Return EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+
+ return fTimeShiftEmc[module-1][column-1][row-1];
+}
+//________________________________________________________________
+Float_t AliPHOSEmcCalibData::GetSampleTimeStep()const
+{
+ //Returns conversion coefficient from ALTRO smaple time step and secods
+ //Negative value not used in reconstruction (conversion taken from TRU trailer)
+ //and only in raw simulation
+ return fSampleTimeStep ;
+}
+//________________________________________________________________
+Int_t AliPHOSEmcCalibData::GetAltroOffsetEmc(Int_t module, Int_t column, Int_t row) const
+{
+ //Return EMC altro offsets
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+
+ return fAltroOffsets[module-1][column-1][row-1];
+}
+//________________________________________________________________
void AliPHOSEmcCalibData::SetADCchannelEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
+ //Set EMC calibration coefficient
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+
fADCchannelEmc[module-1][column-1][row-1] = value;
}
+//________________________________________________________________
void AliPHOSEmcCalibData::SetADCpedestalEmc(Int_t module, Int_t column, Int_t row, Float_t value)
{
+ //Set EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
fADCpedestalEmc[module-1][column-1][row-1] = value;
}
+
+//________________________________________________________________
+void AliPHOSEmcCalibData::SetHighLowRatioEmc(Int_t module, Int_t column, Int_t row, Float_t value)
+{
+ //Set EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+ fHighLowRatioEmc[module-1][column-1][row-1] = value;
+}
+//________________________________________________________________
+void AliPHOSEmcCalibData::SetTimeShiftEmc(Int_t module, Int_t column, Int_t row, Float_t value)
+{
+ //Set EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+ fTimeShiftEmc[module-1][column-1][row-1] = value;
+}
+//________________________________________________________________
+void AliPHOSEmcCalibData::SetAltroOffsetEmc(Int_t module, Int_t column, Int_t row, Int_t value)
+{
+ //Set EMC pedestal
+ //module, column,raw should follow the internal PHOS convention:
+ //module 1:5, column 1:56, row 1:64
+ fAltroOffsets[module-1][column-1][row-1] = value;
+}
+//________________________________________________________________
+void AliPHOSEmcCalibData::SetSampleTimeStep(Float_t step)
+{
+ //Sets conversion coefficient from ALTRO smaple time step and secods
+ //Negative value not used in reconstruction (conversion taken from TRU trailer)
+ //and only in raw simulation
+ fSampleTimeStep = step ;
+}
+