ROOT logo
/**************************************************************************
 * Copyright(c) 2004-2006, 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 "AliITSDigitUpgrade.h"
#include "AliITSsegmentationUpgrade.h"
#include "AliLog.h"

///////////////////////////////////////////////////////////////////
//                                                               //
// Class defining the digit object                               //
// for ITS upgrade                                               //
// Inherits from AliDigit                                        //
//                                                               //
///////////////////////////////////////////////////////////////////

ClassImp(AliITSDigitUpgrade)
//______________________________________________________________________
  AliITSDigitUpgrade::AliITSDigitUpgrade():
    AliDigit(),
    fPixId(9999),
    fSignal(0),
    fNLayer(0),
    fModule(0),
    fNelectrons(0),
    fNTracksIdMC(0)
{
 //
 // default constructor
 //
  for(Int_t i=0; i<kMaxLab ; i++) {
    fTrackIdMC[i]=-1;
    fSignalID[i]=-1;
  }
} 
//_______________________________________________________________________
AliITSDigitUpgrade::AliITSDigitUpgrade(Int_t *digits): 
  AliDigit(digits),
  fPixId(9999), 
  fSignal(0),
  fNLayer(0),
  fModule(0), 
  fNelectrons(0),
  fNTracksIdMC(0)
{
 //
 // constructor
 // 
  for(Int_t i=0; i<kMaxLab ; i++) {
    fTrackIdMC[i]=-1;
    fSignalID[i]=-1;
  }
} 
//____________________________________________________________________________________________________
AliITSDigitUpgrade::AliITSDigitUpgrade(ULong_t pixid, Float_t eloss): 
  AliDigit(),
  fPixId(pixid), 
  fSignal(eloss),
  fNLayer(0), 
  fModule(0),
  fNelectrons(0),
  fNTracksIdMC(0)
{
 //
 // Used constructor in simulation
 //
  for(Int_t i=0; i<kMaxLab ; i++) {
    fTrackIdMC[i]=-1;
    fSignalID[i]=-1;
  }
} 
//____________________________________________________________________________________________________
AliITSDigitUpgrade::AliITSDigitUpgrade(const AliITSDigitUpgrade &d):
  AliDigit(d),
  fPixId(d.fPixId),
  fSignal(d.fSignal),
  fNLayer(d.fNLayer), 
  fModule(d.fModule), 
  fNelectrons(d.fNelectrons),
  fNTracksIdMC(d.fNTracksIdMC)
{
 // 
 // copy constructor
 //
  for(Int_t i=0; i<kMaxLab ; i++) {
    fTrackIdMC[i]=d.fTrackIdMC[i];
    fSignalID[i]=d.fSignalID[i];
  }
  for(Int_t i=0; i<3 ; i++) fSignalID[i]=d.fSignalID[i];
} 

//____________________________________________________________________________________________________
void AliITSDigitUpgrade::AddTrackID(Int_t tid) { 
  // 
  // Add an MC label (track ID) to the "expanded list"
  //
  if (fNTracksIdMC==kMaxLab) {
    AliWarning("Max. numbers of labels reached!"); 
  } else {
    fTrackIdMC[fNTracksIdMC]=tid; 
    fNTracksIdMC++;
  } 
}

//____________________________________________________________________________________________________
void  AliITSDigitUpgrade::GetPosition(Int_t ilayer, Int_t nx, Int_t nz, Double_t &xloc, Double_t &zloc){
  //
  // Determines the local coordinates of the center of the pixel (a digit is a pixel)
  //

  AliITSsegmentationUpgrade *s =new AliITSsegmentationUpgrade();
  if(s->GetCellSizeX(ilayer)!=0) xloc= (nx)*(s->GetCellSizeX(ilayer))+0.5*(s->GetCellSizeX(ilayer));
  else AliError("Upgrade segmentation not initalized");

  if(s->GetCellSizeZ(ilayer)!=0)
    zloc=(nz)*(s->GetCellSizeZ(ilayer))+0.5*(s->GetCellSizeZ(ilayer))-(s->GetHalfLength(ilayer));
  else AliError("Upgrade segmentation not initalized");
  delete s;
}
//____________________________________________________________________________________________________
void AliITSDigitUpgrade::PrintInfo(){
  //
  //Standard output format for this class
  //

  Double_t xz[2]={-1,-1};
  GetPosition(fNLayer,GetxPixelNumber(),GetzPixelNumber(),xz[0],xz[1]);
   
  printf("pixid  %10.0i (%6.3f,%6.3f) in layer %i \n",(Int_t)fPixId,xz[0],xz[1],fNLayer);
  printf("pixid  %u ",(UInt_t)fPixId);
  printf(" (xloc, zloc)= (%6.3f, %6.3f) in layer %i and module %i \n",xz[0],xz[1],fNLayer, fModule);
  printf(" Eloss %f  Nel %f \n ",fSignal, fNelectrons);
  printf(" MC Track Ids =(");
  if (kMaxLab<=fNTracksIdMC) {
    for (Int_t i=0; i<kMaxLab; i++) { printf("%d,",fTrackIdMC[i]); }
    printf(")\n ElossID = (");
    for (Int_t i=0; i<kMaxLab; i++) { printf("%lf,",fSignalID[i]); }
  } else {
    for (Int_t i=0; i<fNTracksIdMC; i++) { printf("%d,",fTrackIdMC[i]); }
    printf(")\n ElossID = (");
    for (Int_t i=0; i<fNTracksIdMC; i++) { printf("%lf,",fSignalID[i]); }
  }
  printf(")\n");
}

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