ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

#include <Riostream.h>
#include <TRandom.h>
#include "AliITSCalibrationSDD.h"
#include "AliLog.h"

//////////////////////////////////////////////////////
//  Calibration class for set:ITS                   //
//  Specific subdetector implementation             //
//  for silicon drift detectors                     //
//                                                  //
//                                                  //
//////////////////////////////////////////////////////

const Float_t AliITSCalibrationSDD::fgkTemperatureDefault = 296.;
const Float_t AliITSCalibrationSDD::fgkNoiseDefault = 2.38;
const Float_t AliITSCalibrationSDD::fgkGainDefault = 1.;
const Float_t AliITSCalibrationSDD::fgkBaselineDefault = 20.;
//______________________________________________________________________

using std::endl;
using std::cout;
ClassImp(AliITSCalibrationSDD)

AliITSCalibrationSDD::AliITSCalibrationSDD():
AliITSCalibration(),
fZeroSupp(kTRUE),
fAMAt20MHz(kFALSE),
fDeadChips(0),
fDeadChannels(0),
fIsBad(kFALSE),
fBadChannels(),
fMapAW0(0),
fMapAW1(0),
fMapTW0(0),
fMapTW1(0),
fDrSpeed0(0),
fDrSpeed1(0)
{
  // default constructor

  SetDeadChannels();
  for(Int_t ian=0;ian<fgkWings*fgkChannels*fgkChips;ian++){
    fBaseline[ian]=fgkBaselineDefault;
    fNoise[ian]=fgkNoiseDefault;
    fGain[ian]=1.;
    SetNoiseAfterElectronics(ian);
  }
  for(Int_t iw=0;iw<fgkWings;iw++){
    SetZSLowThreshold(iw);
    SetZSHighThreshold(iw);
    for(Int_t icp=0;icp<fgkChips;icp++){
      Int_t chipindex=iw*fgkChips+icp;
      fIsChipBad[chipindex]=kFALSE;
    }
  }
  SetTemperature(fgkTemperatureDefault);
  SetDataType();
 }
//______________________________________________________________________
AliITSCalibrationSDD::AliITSCalibrationSDD(const char *dataType):
AliITSCalibration(),
fZeroSupp(kTRUE),
fAMAt20MHz(kFALSE),
fDeadChips(0),
fDeadChannels(0),
fIsBad(kFALSE),
fBadChannels(),
fMapAW0(0),
fMapAW1(0),
fMapTW0(0),
fMapTW1(0),
fDrSpeed0(0),
fDrSpeed1(0)
{
  // constructor

  SetDeadChannels();
  for(Int_t ian=0;ian<fgkWings*fgkChannels*fgkChips;ian++){
    fBaseline[ian]=fgkBaselineDefault;
    fNoise[ian]=fgkNoiseDefault;
    fGain[ian]=1.;
    SetNoiseAfterElectronics(ian);
  }  
  for(Int_t iw=0;iw<fgkWings;iw++){
    SetZSLowThreshold(iw);
    SetZSHighThreshold(iw);
    for(Int_t icp=0;icp<fgkChips;icp++){
      Int_t chipindex=iw*fgkChips+icp;
      fIsChipBad[chipindex]=kFALSE;
    }
  }

  SetTemperature(fgkTemperatureDefault);
  SetDataType(dataType);
 }
//_____________________________________________________________________
AliITSCalibrationSDD::~AliITSCalibrationSDD(){

  //destructor
  if(fMapAW0) delete fMapAW0;
  if(fMapAW1) delete fMapAW1;
  if(fMapTW0) delete fMapTW0;
  if(fMapTW1) delete fMapTW1;
  if(fDrSpeed0) delete fDrSpeed0;
  if(fDrSpeed1) delete fDrSpeed1;
}

//______________________________________________________________________
void AliITSCalibrationSDD::GiveCompressParam(Int_t  cp[4]) const {
  // give compression param
  cp[0]=fZSTH[0];
  cp[1]=fZSTL[0];
  cp[2]=fZSTH[1];
  cp[3]=fZSTL[1];
}
//_____________________________________________________________________
void AliITSCalibrationSDD::SetBadChannel(Int_t i,Int_t anode){
  //Set bad anode (set gain=0 for these channels);

  if(anode<0 || anode >fgkChannels*fgkChips*fgkWings-1){
    AliError("Wrong anode number");
    return;
  }
  fBadChannels[i]=anode;
  fGain[anode]=0;
}
//______________________________________________________________________
void AliITSCalibrationSDD::GetCorrections(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg){
  //correction of coordinates using the maps stored in the DB
  Int_t nSide=seg->GetSideFromLocalX(x);
  devz=0;
//     if(nSide==0) devz=fMapAW0->GetCorrection(z,x,seg);
//     else devz=fMapAW1->GetCorrection(z,x,seg);
  devx=0;
  if(nSide==0) devx=fMapTW0->GetCorrection(z,x,seg);
  else devx=fMapTW1->GetCorrection(z,x,seg);
  return;
}
//______________________________________________________________________
void AliITSCalibrationSDD::GetShiftsForSimulation(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg){
  //correction of coordinates using the maps stored in the DB
  Int_t nSide=seg->GetSideFromLocalX(x);
  devz=0;
//     if(nSide==0) devz=fMapAW0->GetCorrection(z,x,seg);
//     else devz=fMapAW1->GetCorrection(z,x,seg);
  devx=0;
  if(nSide==0) devx=fMapTW0->GetShiftForSimulation(z,x,seg);
  else devx=fMapTW1->GetShiftForSimulation(z,x,seg);
  return;
}
//______________________________________________________________________
void AliITSCalibrationSDD::PrintGains() const{
  // Print Gains

  if( GetDeadChips() == 0 && 
      GetDeadChannels() == 0 )
    return;  

  // Print Electronics Gains
  cout << "**************************************************" << endl; 
  cout << "             Print Electronics Gains              " << endl;
  cout << "**************************************************" << endl;

  // Print SDD electronic gains
  for(Int_t ian=0; ian<fgkWings*fgkChips*fgkChannels;ian++){
    printf("Gain for channel %d = %f\n",ian,fGain[ian]);
  }
}

//______________________________________________________________________
void AliITSCalibrationSDD::Print(){
  // Print SDD response Parameters

  cout << "**************************************************" << endl;
  cout << "   Silicon Drift Detector Response Parameters    " << endl;
  cout << "**************************************************" << endl;
  cout << "Hardware compression parameters: " << endl; 
  cout << "Noise before electronics (arbitrary units): " << fNoise[0] << endl;
  cout << "Baseline (ADC units): " << fBaseline[0] << endl;
  cout << "Noise after electronics (ADC units): " << fNoiseAfterEl[0] << endl;
  cout << "Temperature: " << Temperature() << " K " << endl;
  PrintGains();

}
 AliITSCalibrationSDD.cxx:1
 AliITSCalibrationSDD.cxx:2
 AliITSCalibrationSDD.cxx:3
 AliITSCalibrationSDD.cxx:4
 AliITSCalibrationSDD.cxx:5
 AliITSCalibrationSDD.cxx:6
 AliITSCalibrationSDD.cxx:7
 AliITSCalibrationSDD.cxx:8
 AliITSCalibrationSDD.cxx:9
 AliITSCalibrationSDD.cxx:10
 AliITSCalibrationSDD.cxx:11
 AliITSCalibrationSDD.cxx:12
 AliITSCalibrationSDD.cxx:13
 AliITSCalibrationSDD.cxx:14
 AliITSCalibrationSDD.cxx:15
 AliITSCalibrationSDD.cxx:16
 AliITSCalibrationSDD.cxx:17
 AliITSCalibrationSDD.cxx:18
 AliITSCalibrationSDD.cxx:19
 AliITSCalibrationSDD.cxx:20
 AliITSCalibrationSDD.cxx:21
 AliITSCalibrationSDD.cxx:22
 AliITSCalibrationSDD.cxx:23
 AliITSCalibrationSDD.cxx:24
 AliITSCalibrationSDD.cxx:25
 AliITSCalibrationSDD.cxx:26
 AliITSCalibrationSDD.cxx:27
 AliITSCalibrationSDD.cxx:28
 AliITSCalibrationSDD.cxx:29
 AliITSCalibrationSDD.cxx:30
 AliITSCalibrationSDD.cxx:31
 AliITSCalibrationSDD.cxx:32
 AliITSCalibrationSDD.cxx:33
 AliITSCalibrationSDD.cxx:34
 AliITSCalibrationSDD.cxx:35
 AliITSCalibrationSDD.cxx:36
 AliITSCalibrationSDD.cxx:37
 AliITSCalibrationSDD.cxx:38
 AliITSCalibrationSDD.cxx:39
 AliITSCalibrationSDD.cxx:40
 AliITSCalibrationSDD.cxx:41
 AliITSCalibrationSDD.cxx:42
 AliITSCalibrationSDD.cxx:43
 AliITSCalibrationSDD.cxx:44
 AliITSCalibrationSDD.cxx:45
 AliITSCalibrationSDD.cxx:46
 AliITSCalibrationSDD.cxx:47
 AliITSCalibrationSDD.cxx:48
 AliITSCalibrationSDD.cxx:49
 AliITSCalibrationSDD.cxx:50
 AliITSCalibrationSDD.cxx:51
 AliITSCalibrationSDD.cxx:52
 AliITSCalibrationSDD.cxx:53
 AliITSCalibrationSDD.cxx:54
 AliITSCalibrationSDD.cxx:55
 AliITSCalibrationSDD.cxx:56
 AliITSCalibrationSDD.cxx:57
 AliITSCalibrationSDD.cxx:58
 AliITSCalibrationSDD.cxx:59
 AliITSCalibrationSDD.cxx:60
 AliITSCalibrationSDD.cxx:61
 AliITSCalibrationSDD.cxx:62
 AliITSCalibrationSDD.cxx:63
 AliITSCalibrationSDD.cxx:64
 AliITSCalibrationSDD.cxx:65
 AliITSCalibrationSDD.cxx:66
 AliITSCalibrationSDD.cxx:67
 AliITSCalibrationSDD.cxx:68
 AliITSCalibrationSDD.cxx:69
 AliITSCalibrationSDD.cxx:70
 AliITSCalibrationSDD.cxx:71
 AliITSCalibrationSDD.cxx:72
 AliITSCalibrationSDD.cxx:73
 AliITSCalibrationSDD.cxx:74
 AliITSCalibrationSDD.cxx:75
 AliITSCalibrationSDD.cxx:76
 AliITSCalibrationSDD.cxx:77
 AliITSCalibrationSDD.cxx:78
 AliITSCalibrationSDD.cxx:79
 AliITSCalibrationSDD.cxx:80
 AliITSCalibrationSDD.cxx:81
 AliITSCalibrationSDD.cxx:82
 AliITSCalibrationSDD.cxx:83
 AliITSCalibrationSDD.cxx:84
 AliITSCalibrationSDD.cxx:85
 AliITSCalibrationSDD.cxx:86
 AliITSCalibrationSDD.cxx:87
 AliITSCalibrationSDD.cxx:88
 AliITSCalibrationSDD.cxx:89
 AliITSCalibrationSDD.cxx:90
 AliITSCalibrationSDD.cxx:91
 AliITSCalibrationSDD.cxx:92
 AliITSCalibrationSDD.cxx:93
 AliITSCalibrationSDD.cxx:94
 AliITSCalibrationSDD.cxx:95
 AliITSCalibrationSDD.cxx:96
 AliITSCalibrationSDD.cxx:97
 AliITSCalibrationSDD.cxx:98
 AliITSCalibrationSDD.cxx:99
 AliITSCalibrationSDD.cxx:100
 AliITSCalibrationSDD.cxx:101
 AliITSCalibrationSDD.cxx:102
 AliITSCalibrationSDD.cxx:103
 AliITSCalibrationSDD.cxx:104
 AliITSCalibrationSDD.cxx:105
 AliITSCalibrationSDD.cxx:106
 AliITSCalibrationSDD.cxx:107
 AliITSCalibrationSDD.cxx:108
 AliITSCalibrationSDD.cxx:109
 AliITSCalibrationSDD.cxx:110
 AliITSCalibrationSDD.cxx:111
 AliITSCalibrationSDD.cxx:112
 AliITSCalibrationSDD.cxx:113
 AliITSCalibrationSDD.cxx:114
 AliITSCalibrationSDD.cxx:115
 AliITSCalibrationSDD.cxx:116
 AliITSCalibrationSDD.cxx:117
 AliITSCalibrationSDD.cxx:118
 AliITSCalibrationSDD.cxx:119
 AliITSCalibrationSDD.cxx:120
 AliITSCalibrationSDD.cxx:121
 AliITSCalibrationSDD.cxx:122
 AliITSCalibrationSDD.cxx:123
 AliITSCalibrationSDD.cxx:124
 AliITSCalibrationSDD.cxx:125
 AliITSCalibrationSDD.cxx:126
 AliITSCalibrationSDD.cxx:127
 AliITSCalibrationSDD.cxx:128
 AliITSCalibrationSDD.cxx:129
 AliITSCalibrationSDD.cxx:130
 AliITSCalibrationSDD.cxx:131
 AliITSCalibrationSDD.cxx:132
 AliITSCalibrationSDD.cxx:133
 AliITSCalibrationSDD.cxx:134
 AliITSCalibrationSDD.cxx:135
 AliITSCalibrationSDD.cxx:136
 AliITSCalibrationSDD.cxx:137
 AliITSCalibrationSDD.cxx:138
 AliITSCalibrationSDD.cxx:139
 AliITSCalibrationSDD.cxx:140
 AliITSCalibrationSDD.cxx:141
 AliITSCalibrationSDD.cxx:142
 AliITSCalibrationSDD.cxx:143
 AliITSCalibrationSDD.cxx:144
 AliITSCalibrationSDD.cxx:145
 AliITSCalibrationSDD.cxx:146
 AliITSCalibrationSDD.cxx:147
 AliITSCalibrationSDD.cxx:148
 AliITSCalibrationSDD.cxx:149
 AliITSCalibrationSDD.cxx:150
 AliITSCalibrationSDD.cxx:151
 AliITSCalibrationSDD.cxx:152
 AliITSCalibrationSDD.cxx:153
 AliITSCalibrationSDD.cxx:154
 AliITSCalibrationSDD.cxx:155
 AliITSCalibrationSDD.cxx:156
 AliITSCalibrationSDD.cxx:157
 AliITSCalibrationSDD.cxx:158
 AliITSCalibrationSDD.cxx:159
 AliITSCalibrationSDD.cxx:160
 AliITSCalibrationSDD.cxx:161
 AliITSCalibrationSDD.cxx:162
 AliITSCalibrationSDD.cxx:163
 AliITSCalibrationSDD.cxx:164
 AliITSCalibrationSDD.cxx:165
 AliITSCalibrationSDD.cxx:166
 AliITSCalibrationSDD.cxx:167
 AliITSCalibrationSDD.cxx:168
 AliITSCalibrationSDD.cxx:169
 AliITSCalibrationSDD.cxx:170
 AliITSCalibrationSDD.cxx:171
 AliITSCalibrationSDD.cxx:172
 AliITSCalibrationSDD.cxx:173
 AliITSCalibrationSDD.cxx:174
 AliITSCalibrationSDD.cxx:175
 AliITSCalibrationSDD.cxx:176
 AliITSCalibrationSDD.cxx:177
 AliITSCalibrationSDD.cxx:178
 AliITSCalibrationSDD.cxx:179
 AliITSCalibrationSDD.cxx:180
 AliITSCalibrationSDD.cxx:181
 AliITSCalibrationSDD.cxx:182
 AliITSCalibrationSDD.cxx:183
 AliITSCalibrationSDD.cxx:184
 AliITSCalibrationSDD.cxx:185
 AliITSCalibrationSDD.cxx:186
 AliITSCalibrationSDD.cxx:187
 AliITSCalibrationSDD.cxx:188
 AliITSCalibrationSDD.cxx:189
 AliITSCalibrationSDD.cxx:190
 AliITSCalibrationSDD.cxx:191
 AliITSCalibrationSDD.cxx:192
 AliITSCalibrationSDD.cxx:193
 AliITSCalibrationSDD.cxx:194
 AliITSCalibrationSDD.cxx:195
 AliITSCalibrationSDD.cxx:196
 AliITSCalibrationSDD.cxx:197
 AliITSCalibrationSDD.cxx:198
 AliITSCalibrationSDD.cxx:199
 AliITSCalibrationSDD.cxx:200
 AliITSCalibrationSDD.cxx:201