ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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$ */

//////////////////////////////////////////////////////
//  Base response class forITS                      //
//  It is used to set static data members           //
//  connected to parameters equal for all           //
//  the modules                                     //
//                                                  //
//                                                  //
//////////////////////////////////////////////////////

#include <TMath.h>

#include "AliITSresponseSDD.h"
#include <AliITSgeomTGeo.h>

const Float_t AliITSresponseSDD::fgkTimeOffsetDefault = 54.30;
const Float_t AliITSresponseSDD::fgkADC2keVDefault = 3.34;
const Float_t AliITSresponseSDD::fgkChargevsTimeDefault = 0.00355;
const Float_t AliITSresponseSDD::fgkADCvsDrTimeDefault = 0.0101;
const Float_t AliITSresponseSDD::fgkCarlosRXClockPeriod = 25.;
ClassImp(AliITSresponseSDD)

//_________________________________________________________________________
AliITSresponseSDD::AliITSresponseSDD():
TObject(),
  fTimeOffset(fgkTimeOffsetDefault),
  fADC2keV(fgkADC2keVDefault),
  fChargevsTime(fgkChargevsTimeDefault)
{
  // default constructor
  for(Int_t i=0; i<kNSDDmods;i++){
    fTimeZero[i]=fgkTimeOffsetDefault;
    fDeltaVDrift[i] = fDeltaVDrift[i+kNSDDmods] = 0.;
    fADCtokeV[i]=fgkADC2keVDefault;
    fADCvsDriftTime[i]=fgkADCvsDrTimeDefault;
  }  
  SetVDCorr2Side(kTRUE); // default for new objects will be separate corrections for 2 sides (bwd compatible)
  //  SetVDCorrMult(kTRUE); // default for new objects will have multiplicative correction v'=(1+corr)*v (bwd compatible)
}
//_________________________________________________________________________
void AliITSresponseSDD::SetHalfLadderATimeZero(Int_t lay, Int_t lad, Float_t tzero){
  // Sets time Zero for all modules of a ladder on side A (Z>0)
  Int_t minMod,maxMod;
  if(lay==3){
    minMod=1; 
    maxMod=3;
    if(lad>kNLaddersLay3){
      AliError(Form("Ladder number %d out of range",lad));
      return;
    }
  }else if(lay==4){
    minMod=1; 
    maxMod=4;
    if(lad>kNLaddersLay4){
      AliError(Form("Ladder number %d out of range",lad));
      return;
    }
  }else{
    AliError(Form("Layer number %d out of range",lay));
    return;
  }
  for(Int_t iMod=minMod; iMod<=maxMod; iMod++){
    Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(lay,lad,iMod);
    SetModuleTimeZero(modIndex,tzero);
  }
}
//_________________________________________________________________________
void AliITSresponseSDD::SetHalfLadderCTimeZero(Int_t lay, Int_t lad, Float_t tzero){
  // Sets time Zero for all modules of a ladder on side C (Z<0)
  Int_t minMod,maxMod;
  if(lay==3){
    minMod=4; 
    maxMod=6;
    if(lad>kNLaddersLay3){
      AliError(Form("Ladder number %d out of range",lad));
      return;
    }
  }else if(lay==4){
    minMod=5; 
    maxMod=8;
    if(lad>kNLaddersLay4){
      AliError(Form("Ladder number %d out of range",lad));
      return;
    }
  }else{
    AliError(Form("Layer number %d out of range",lay));
    return;
  }
  for(Int_t iMod=minMod; iMod<=maxMod; iMod++){
    Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(lay,lad,iMod);
    SetModuleTimeZero(modIndex,tzero);
  }
}
//_________________________________________________________________________
void AliITSresponseSDD::PrintChargeCalibrationParams() const{
  // Dump charge calibration parameters

  printf("ADC vs. drift time corr=%f\n",GetChargevsTime());
  printf("-------------------------------------\n");
  printf("Layer 3\n");
  for(Int_t ilad=1; ilad<=14; ilad++){
    for(Int_t idet=1; idet<=6;idet++){
      Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(3,ilad,idet);
      Float_t tz=GetADCtokeV(modIndex);
      printf("%7.2f   ",tz);
    }
    printf("\n");
  }
  printf("\n");
  printf("Layer 4\n");
  for(Int_t ilad=1; ilad<=22; ilad++){
    for(Int_t idet=1; idet<=8;idet++){
      Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(4,ilad,idet);
      Float_t tz=GetADCtokeV(modIndex);
      printf("%7.2f   ",tz);
    }
    printf("\n");
  }  
}
//_________________________________________________________________________
void AliITSresponseSDD::PrintTimeZeroes() const{
  // Dump time zero values

  printf("Layer 3\n");
  for(Int_t ilad=1; ilad<=14; ilad++){
    for(Int_t idet=1; idet<=6;idet++){
      Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(3,ilad,idet);
      Float_t tz=GetTimeZero(modIndex);
      printf("%7.2f   ",tz);
    }
    printf("\n");
  }
  printf("\n");
  printf("Layer 4\n");
  for(Int_t ilad=1; ilad<=22; ilad++){
    for(Int_t idet=1; idet<=8;idet++){
      Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(4,ilad,idet);
      Float_t tz=GetTimeZero(modIndex);
      printf("%7.2f   ",tz);
    }
    printf("\n");
  }
  
}
//_________________________________________________________________________
void AliITSresponseSDD::PrintVdriftCorerctions() const{
  // Dump corrections to vdrift

  for(Int_t iMod=240; iMod<500; iMod++){
    printf("Module %d   dVleft=%f   dVright=%f\n",iMod,GetDeltaVDrift(iMod,0),GetDeltaVDrift(iMod,1));
  }
}
 AliITSresponseSDD.cxx:1
 AliITSresponseSDD.cxx:2
 AliITSresponseSDD.cxx:3
 AliITSresponseSDD.cxx:4
 AliITSresponseSDD.cxx:5
 AliITSresponseSDD.cxx:6
 AliITSresponseSDD.cxx:7
 AliITSresponseSDD.cxx:8
 AliITSresponseSDD.cxx:9
 AliITSresponseSDD.cxx:10
 AliITSresponseSDD.cxx:11
 AliITSresponseSDD.cxx:12
 AliITSresponseSDD.cxx:13
 AliITSresponseSDD.cxx:14
 AliITSresponseSDD.cxx:15
 AliITSresponseSDD.cxx:16
 AliITSresponseSDD.cxx:17
 AliITSresponseSDD.cxx:18
 AliITSresponseSDD.cxx:19
 AliITSresponseSDD.cxx:20
 AliITSresponseSDD.cxx:21
 AliITSresponseSDD.cxx:22
 AliITSresponseSDD.cxx:23
 AliITSresponseSDD.cxx:24
 AliITSresponseSDD.cxx:25
 AliITSresponseSDD.cxx:26
 AliITSresponseSDD.cxx:27
 AliITSresponseSDD.cxx:28
 AliITSresponseSDD.cxx:29
 AliITSresponseSDD.cxx:30
 AliITSresponseSDD.cxx:31
 AliITSresponseSDD.cxx:32
 AliITSresponseSDD.cxx:33
 AliITSresponseSDD.cxx:34
 AliITSresponseSDD.cxx:35
 AliITSresponseSDD.cxx:36
 AliITSresponseSDD.cxx:37
 AliITSresponseSDD.cxx:38
 AliITSresponseSDD.cxx:39
 AliITSresponseSDD.cxx:40
 AliITSresponseSDD.cxx:41
 AliITSresponseSDD.cxx:42
 AliITSresponseSDD.cxx:43
 AliITSresponseSDD.cxx:44
 AliITSresponseSDD.cxx:45
 AliITSresponseSDD.cxx:46
 AliITSresponseSDD.cxx:47
 AliITSresponseSDD.cxx:48
 AliITSresponseSDD.cxx:49
 AliITSresponseSDD.cxx:50
 AliITSresponseSDD.cxx:51
 AliITSresponseSDD.cxx:52
 AliITSresponseSDD.cxx:53
 AliITSresponseSDD.cxx:54
 AliITSresponseSDD.cxx:55
 AliITSresponseSDD.cxx:56
 AliITSresponseSDD.cxx:57
 AliITSresponseSDD.cxx:58
 AliITSresponseSDD.cxx:59
 AliITSresponseSDD.cxx:60
 AliITSresponseSDD.cxx:61
 AliITSresponseSDD.cxx:62
 AliITSresponseSDD.cxx:63
 AliITSresponseSDD.cxx:64
 AliITSresponseSDD.cxx:65
 AliITSresponseSDD.cxx:66
 AliITSresponseSDD.cxx:67
 AliITSresponseSDD.cxx:68
 AliITSresponseSDD.cxx:69
 AliITSresponseSDD.cxx:70
 AliITSresponseSDD.cxx:71
 AliITSresponseSDD.cxx:72
 AliITSresponseSDD.cxx:73
 AliITSresponseSDD.cxx:74
 AliITSresponseSDD.cxx:75
 AliITSresponseSDD.cxx:76
 AliITSresponseSDD.cxx:77
 AliITSresponseSDD.cxx:78
 AliITSresponseSDD.cxx:79
 AliITSresponseSDD.cxx:80
 AliITSresponseSDD.cxx:81
 AliITSresponseSDD.cxx:82
 AliITSresponseSDD.cxx:83
 AliITSresponseSDD.cxx:84
 AliITSresponseSDD.cxx:85
 AliITSresponseSDD.cxx:86
 AliITSresponseSDD.cxx:87
 AliITSresponseSDD.cxx:88
 AliITSresponseSDD.cxx:89
 AliITSresponseSDD.cxx:90
 AliITSresponseSDD.cxx:91
 AliITSresponseSDD.cxx:92
 AliITSresponseSDD.cxx:93
 AliITSresponseSDD.cxx:94
 AliITSresponseSDD.cxx:95
 AliITSresponseSDD.cxx:96
 AliITSresponseSDD.cxx:97
 AliITSresponseSDD.cxx:98
 AliITSresponseSDD.cxx:99
 AliITSresponseSDD.cxx:100
 AliITSresponseSDD.cxx:101
 AliITSresponseSDD.cxx:102
 AliITSresponseSDD.cxx:103
 AliITSresponseSDD.cxx:104
 AliITSresponseSDD.cxx:105
 AliITSresponseSDD.cxx:106
 AliITSresponseSDD.cxx:107
 AliITSresponseSDD.cxx:108
 AliITSresponseSDD.cxx:109
 AliITSresponseSDD.cxx:110
 AliITSresponseSDD.cxx:111
 AliITSresponseSDD.cxx:112
 AliITSresponseSDD.cxx:113
 AliITSresponseSDD.cxx:114
 AliITSresponseSDD.cxx:115
 AliITSresponseSDD.cxx:116
 AliITSresponseSDD.cxx:117
 AliITSresponseSDD.cxx:118
 AliITSresponseSDD.cxx:119
 AliITSresponseSDD.cxx:120
 AliITSresponseSDD.cxx:121
 AliITSresponseSDD.cxx:122
 AliITSresponseSDD.cxx:123
 AliITSresponseSDD.cxx:124
 AliITSresponseSDD.cxx:125
 AliITSresponseSDD.cxx:126
 AliITSresponseSDD.cxx:127
 AliITSresponseSDD.cxx:128
 AliITSresponseSDD.cxx:129
 AliITSresponseSDD.cxx:130
 AliITSresponseSDD.cxx:131
 AliITSresponseSDD.cxx:132
 AliITSresponseSDD.cxx:133
 AliITSresponseSDD.cxx:134
 AliITSresponseSDD.cxx:135
 AliITSresponseSDD.cxx:136
 AliITSresponseSDD.cxx:137
 AliITSresponseSDD.cxx:138
 AliITSresponseSDD.cxx:139
 AliITSresponseSDD.cxx:140
 AliITSresponseSDD.cxx:141
 AliITSresponseSDD.cxx:142
 AliITSresponseSDD.cxx:143
 AliITSresponseSDD.cxx:144
 AliITSresponseSDD.cxx:145
 AliITSresponseSDD.cxx:146
 AliITSresponseSDD.cxx:147
 AliITSresponseSDD.cxx:148
 AliITSresponseSDD.cxx:149
 AliITSresponseSDD.cxx:150
 AliITSresponseSDD.cxx:151
 AliITSresponseSDD.cxx:152
 AliITSresponseSDD.cxx:153
 AliITSresponseSDD.cxx:154
 AliITSresponseSDD.cxx:155
 AliITSresponseSDD.cxx:156
 AliITSresponseSDD.cxx:157
 AliITSresponseSDD.cxx:158
 AliITSresponseSDD.cxx:159
 AliITSresponseSDD.cxx:160
 AliITSresponseSDD.cxx:161
 AliITSresponseSDD.cxx:162
 AliITSresponseSDD.cxx:163
 AliITSresponseSDD.cxx:164
 AliITSresponseSDD.cxx:165
 AliITSresponseSDD.cxx:166
 AliITSresponseSDD.cxx:167
 AliITSresponseSDD.cxx:168