LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSCalibrationSDD.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 42 108 38.9 %
Date: 2016-06-14 17:26:59 Functions: 5 14 35.7 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 2007-2009, 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             : /* $Id$ */
      17             : 
      18             : #include <Riostream.h>
      19             : #include <TRandom.h>
      20             : #include "AliITSCalibrationSDD.h"
      21             : #include "AliLog.h"
      22             : 
      23             : //////////////////////////////////////////////////////
      24             : //  Calibration class for set:ITS                   //
      25             : //  Specific subdetector implementation             //
      26             : //  for silicon drift detectors                     //
      27             : //                                                  //
      28             : //                                                  //
      29             : //////////////////////////////////////////////////////
      30             : 
      31             : const Float_t AliITSCalibrationSDD::fgkTemperatureDefault = 296.;
      32             : const Float_t AliITSCalibrationSDD::fgkNoiseDefault = 2.38;
      33             : const Float_t AliITSCalibrationSDD::fgkGainDefault = 1.;
      34             : const Float_t AliITSCalibrationSDD::fgkBaselineDefault = 20.;
      35             : //______________________________________________________________________
      36             : 
      37             : using std::endl;
      38             : using std::cout;
      39         118 : ClassImp(AliITSCalibrationSDD)
      40             : 
      41             : AliITSCalibrationSDD::AliITSCalibrationSDD():
      42         780 : AliITSCalibration(),
      43         780 : fZeroSupp(kTRUE),
      44         780 : fAMAt20MHz(kFALSE),
      45         780 : fDeadChips(0),
      46         780 : fDeadChannels(0),
      47         780 : fIsBad(kFALSE),
      48         780 : fBadChannels(),
      49         780 : fMapAW0(0),
      50         780 : fMapAW1(0),
      51         780 : fMapTW0(0),
      52         780 : fMapTW1(0),
      53         780 : fDrSpeed0(0),
      54         780 : fDrSpeed1(0)
      55        3900 : {
      56             :   // default constructor
      57             : 
      58         780 :   SetDeadChannels();
      59      800280 :   for(Int_t ian=0;ian<fgkWings*fgkChannels*fgkChips;ian++){
      60      399360 :     fBaseline[ian]=fgkBaselineDefault;
      61      399360 :     fNoise[ian]=fgkNoiseDefault;
      62      399360 :     fGain[ian]=1.;
      63      399360 :     SetNoiseAfterElectronics(ian);
      64             :   }
      65        4680 :   for(Int_t iw=0;iw<fgkWings;iw++){
      66        1560 :     SetZSLowThreshold(iw);
      67        1560 :     SetZSHighThreshold(iw);
      68       15600 :     for(Int_t icp=0;icp<fgkChips;icp++){
      69        6240 :       Int_t chipindex=iw*fgkChips+icp;
      70        6240 :       fIsChipBad[chipindex]=kFALSE;
      71             :     }
      72             :   }
      73         780 :   SetTemperature(fgkTemperatureDefault);
      74         780 :   SetDataType();
      75        1560 :  }
      76             : //______________________________________________________________________
      77             : AliITSCalibrationSDD::AliITSCalibrationSDD(const char *dataType):
      78           0 : AliITSCalibration(),
      79           0 : fZeroSupp(kTRUE),
      80           0 : fAMAt20MHz(kFALSE),
      81           0 : fDeadChips(0),
      82           0 : fDeadChannels(0),
      83           0 : fIsBad(kFALSE),
      84           0 : fBadChannels(),
      85           0 : fMapAW0(0),
      86           0 : fMapAW1(0),
      87           0 : fMapTW0(0),
      88           0 : fMapTW1(0),
      89           0 : fDrSpeed0(0),
      90           0 : fDrSpeed1(0)
      91           0 : {
      92             :   // constructor
      93             : 
      94           0 :   SetDeadChannels();
      95           0 :   for(Int_t ian=0;ian<fgkWings*fgkChannels*fgkChips;ian++){
      96           0 :     fBaseline[ian]=fgkBaselineDefault;
      97           0 :     fNoise[ian]=fgkNoiseDefault;
      98           0 :     fGain[ian]=1.;
      99           0 :     SetNoiseAfterElectronics(ian);
     100             :   }  
     101           0 :   for(Int_t iw=0;iw<fgkWings;iw++){
     102           0 :     SetZSLowThreshold(iw);
     103           0 :     SetZSHighThreshold(iw);
     104           0 :     for(Int_t icp=0;icp<fgkChips;icp++){
     105           0 :       Int_t chipindex=iw*fgkChips+icp;
     106           0 :       fIsChipBad[chipindex]=kFALSE;
     107             :     }
     108             :   }
     109             : 
     110           0 :   SetTemperature(fgkTemperatureDefault);
     111           0 :   SetDataType(dataType);
     112           0 :  }
     113             : //_____________________________________________________________________
     114           0 : AliITSCalibrationSDD::~AliITSCalibrationSDD(){
     115             : 
     116             :   //destructor
     117           0 :   if(fMapAW0) delete fMapAW0;
     118           0 :   if(fMapAW1) delete fMapAW1;
     119           0 :   if(fMapTW0) delete fMapTW0;
     120           0 :   if(fMapTW1) delete fMapTW1;
     121           0 :   if(fDrSpeed0) delete fDrSpeed0;
     122           0 :   if(fDrSpeed1) delete fDrSpeed1;
     123           0 : }
     124             : 
     125             : //______________________________________________________________________
     126             : void AliITSCalibrationSDD::GiveCompressParam(Int_t  cp[4]) const {
     127             :   // give compression param
     128           0 :   cp[0]=fZSTH[0];
     129           0 :   cp[1]=fZSTL[0];
     130           0 :   cp[2]=fZSTH[1];
     131           0 :   cp[3]=fZSTL[1];
     132           0 : }
     133             : //_____________________________________________________________________
     134             : void AliITSCalibrationSDD::SetBadChannel(Int_t i,Int_t anode){
     135             :   //Set bad anode (set gain=0 for these channels);
     136             : 
     137           0 :   if(anode<0 || anode >fgkChannels*fgkChips*fgkWings-1){
     138           0 :     AliError("Wrong anode number");
     139           0 :     return;
     140             :   }
     141           0 :   fBadChannels[i]=anode;
     142           0 :   fGain[anode]=0;
     143           0 : }
     144             : //______________________________________________________________________
     145             : void AliITSCalibrationSDD::GetCorrections(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg){
     146             :   //correction of coordinates using the maps stored in the DB
     147         456 :   Int_t nSide=seg->GetSideFromLocalX(x);
     148         228 :   devz=0;
     149             : //     if(nSide==0) devz=fMapAW0->GetCorrection(z,x,seg);
     150             : //     else devz=fMapAW1->GetCorrection(z,x,seg);
     151         228 :   devx=0;
     152         348 :   if(nSide==0) devx=fMapTW0->GetCorrection(z,x,seg);
     153         108 :   else devx=fMapTW1->GetCorrection(z,x,seg);
     154             :   return;
     155         228 : }
     156             : //______________________________________________________________________
     157             : void AliITSCalibrationSDD::GetShiftsForSimulation(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg){
     158             :   //correction of coordinates using the maps stored in the DB
     159         580 :   Int_t nSide=seg->GetSideFromLocalX(x);
     160         290 :   devz=0;
     161             : //     if(nSide==0) devz=fMapAW0->GetCorrection(z,x,seg);
     162             : //     else devz=fMapAW1->GetCorrection(z,x,seg);
     163         290 :   devx=0;
     164         430 :   if(nSide==0) devx=fMapTW0->GetShiftForSimulation(z,x,seg);
     165         150 :   else devx=fMapTW1->GetShiftForSimulation(z,x,seg);
     166             :   return;
     167         290 : }
     168             : //______________________________________________________________________
     169             : void AliITSCalibrationSDD::PrintGains() const{
     170             :   // Print Gains
     171             : 
     172           0 :   if( GetDeadChips() == 0 && 
     173           0 :       GetDeadChannels() == 0 )
     174             :     return;  
     175             : 
     176             :   // Print Electronics Gains
     177           0 :   cout << "**************************************************" << endl; 
     178           0 :   cout << "             Print Electronics Gains              " << endl;
     179           0 :   cout << "**************************************************" << endl;
     180             : 
     181             :   // Print SDD electronic gains
     182           0 :   for(Int_t ian=0; ian<fgkWings*fgkChips*fgkChannels;ian++){
     183           0 :     printf("Gain for channel %d = %f\n",ian,fGain[ian]);
     184             :   }
     185           0 : }
     186             : 
     187             : //______________________________________________________________________
     188             : void AliITSCalibrationSDD::Print(){
     189             :   // Print SDD response Parameters
     190             : 
     191           0 :   cout << "**************************************************" << endl;
     192           0 :   cout << "   Silicon Drift Detector Response Parameters    " << endl;
     193           0 :   cout << "**************************************************" << endl;
     194           0 :   cout << "Hardware compression parameters: " << endl; 
     195           0 :   cout << "Noise before electronics (arbitrary units): " << fNoise[0] << endl;
     196           0 :   cout << "Baseline (ADC units): " << fBaseline[0] << endl;
     197           0 :   cout << "Noise after electronics (ADC units): " << fNoiseAfterEl[0] << endl;
     198           0 :   cout << "Temperature: " << Temperature() << " K " << endl;
     199           0 :   PrintGains();
     200             : 
     201           0 : }

Generated by: LCOV version 1.11