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$ */

//***********************************************************************
//
// It consist of a TClonesArray of 
// AliITSpListItem objects
// This array can be accessed via 2 indexed
// it is used at digitization level by 
// all the 3 ITS subdetectors
//
// ***********************************************************************

#include "AliITSpList.h"
#include "AliITSpListItem.h"


//______________________________________________________________________

ClassImp(AliITSpList)
//______________________________________________________________________
AliITSpList::AliITSpList():
fNi(0),
fNj(0),
fa(0),
fEntries(0){
    // Default constructor
    // Inputs:
    //    none.
    // Outputs:
    //    none.
    // Return:
    //    A zeroed/empty AliITSpList class.

}
//______________________________________________________________________
AliITSpList::AliITSpList(Int_t imax,Int_t jmax):
fNi(imax),
fNj(jmax),
fa(new AliITSpListItem[imax*jmax]),
fEntries(0){
    // Standard constructor
    // Inputs:
    //    none.
    // Outputs:
    //    none.
    // Return:
    //    A setup AliITSpList class.

}
//______________________________________________________________________
AliITSpList::~AliITSpList(){
    // Default destructor

  delete [] fa;
  fNi = 0;
  fNj = 0;
  fEntries = 0;
}

//______________________________________________________________________
void AliITSpList::ClearMap(){
    // Delete all AliITSpListItems and zero TClonesArray.
    // Inputs:
    //    none.
    // Outputs:
    //    none.
    // Return:
    //    A zeroed AliITSpList class.
  for(Int_t i=0; i<fEntries; i++)(fa[i]).MarkUnused();
  fEntries = 0;
}
//______________________________________________________________________
void AliITSpList::DeleteHit(Int_t i,Int_t j){
    // Delete a particular AliITSpListItems.
    // Inputs:
    //    Int_t i   Row number
    //    Int_t j   Columns number
    // Outputs:
    //    none.
    // Return:
    //    none.
    Int_t k = GetIndex(i,j);
    if((fa[k]).IsUsed())(fa[k]).MarkUnused();
    if(k==fEntries-1) fEntries--;
}
//______________________________________________________________________
AliITSpList& AliITSpList::operator=(const AliITSpList &source){
    // = operator
    // Inputs:
    //    const AliITSpList &source    A AliITSpList object.
    // Outputs:
    //    none.
    // Return:
    //    A copied AliITSpList object.

  this->~AliITSpList();
  new(this) AliITSpList(source);
  return *this;
}
//______________________________________________________________________
AliITSpList::AliITSpList(const AliITSpList &source) : AliITSMap(source),
fNi(source.fNi),
fNj(source.fNj),
fa(new AliITSpListItem[fNi*fNj]),
fEntries(source.fEntries){
    // Copy constructor
  for(Int_t i=0; i<fEntries; i++)(fa[i]).Build(source.fa[i]);
}
//______________________________________________________________________
void AliITSpList::AddItemTo(Int_t fileIndex, AliITSpListItem *pl) {
    // Adds the contents of pl to the list with track number off set given by
    // fileIndex.
    // Creates the AliITSpListItem if needed.
    // Inputs:
    //    Int_t fileIndex      track number offset value
    //    AliITSpListItem *pl  an AliITSpListItem to be added to this class.
    // Outputs:
    //    none.
    // Return:
    //    none.
    Int_t index = pl->GetIndex();
    AliITSpListItem &lit = fa[index];
    if(!lit.IsUsed())lit.Build(-2,-1,pl->GetModule(),index,0.);
    lit.AddTo(fileIndex,pl);
    if(index>=fEntries) fEntries = index +1;
}
//______________________________________________________________________
void AliITSpList::AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod,
                       Double_t signal){
    // Adds a Signal value to the TClonesArray at i,j. 
    // Creates the AliITSpListItem
    // if needed.
    // Inputs:
    //    Int_t i         Row number for this signal
    //    Int_t j         Column number for this signal
    //    Int_t trk       Track number creating this signal
    //    Int_t ht        Hit number creating this signal
    //    Int_t mod       The module where this signal is in
    //    Double_t signal The signal (ionization)
    // Outputs:
    //    none.
    // Return:
    //    none.
    Int_t index = GetIndex(i,j);
    if (index<0) return;
    AliITSpListItem &lit = fa[index];
    if(!lit.IsUsed()){
      lit.Build(trk,ht,mod,index,signal);
    }
    else {
      lit.AddSignal(trk,ht,mod,index,signal);
    }
    if(index>=fEntries) fEntries = index +1;
}
//______________________________________________________________________
void AliITSpList::AddNoise(Int_t i,Int_t j,Int_t mod,Double_t noise){
    // Adds a noise value to the TClonesArray at i,j. 
    // Creates the AliITSpListItem
    // if needed.
    // Inputs:
    //    Int_t i        Row number for this noise
    //    Int_t j        Column number for this noise
    //    Double_t noise The noise signal value.
    // Outputs:
    //    none.
    // Return:
    //    none.
    Int_t index = GetIndex(i,j);
    if (index<0) return;
    AliITSpListItem &lit = fa[index];
    if(!lit.IsUsed()){
      lit.Build(mod,index,noise);
    }
    else {
      lit.AddNoise(mod,index,noise);
    } 
    if(index>=fEntries) fEntries = index +1;
}
//______________________________________________________________________
void AliITSpList::GetCell(Int_t index,Int_t &i,Int_t &j) const {
  // returns the i,j index numbers from the linearized index computed
  // with GetIndex
  if(index<0 || index>=fNi*fNj){
    Warning("GetCell","Index out of range 0<=index=%d<%d",
	    index,fNi*fNj);
    i=-1;j=-1;
    return;
  } // end if
  i = index/fNj;
  j = index - fNj*i;
  return;
}
 AliITSpList.cxx:1
 AliITSpList.cxx:2
 AliITSpList.cxx:3
 AliITSpList.cxx:4
 AliITSpList.cxx:5
 AliITSpList.cxx:6
 AliITSpList.cxx:7
 AliITSpList.cxx:8
 AliITSpList.cxx:9
 AliITSpList.cxx:10
 AliITSpList.cxx:11
 AliITSpList.cxx:12
 AliITSpList.cxx:13
 AliITSpList.cxx:14
 AliITSpList.cxx:15
 AliITSpList.cxx:16
 AliITSpList.cxx:17
 AliITSpList.cxx:18
 AliITSpList.cxx:19
 AliITSpList.cxx:20
 AliITSpList.cxx:21
 AliITSpList.cxx:22
 AliITSpList.cxx:23
 AliITSpList.cxx:24
 AliITSpList.cxx:25
 AliITSpList.cxx:26
 AliITSpList.cxx:27
 AliITSpList.cxx:28
 AliITSpList.cxx:29
 AliITSpList.cxx:30
 AliITSpList.cxx:31
 AliITSpList.cxx:32
 AliITSpList.cxx:33
 AliITSpList.cxx:34
 AliITSpList.cxx:35
 AliITSpList.cxx:36
 AliITSpList.cxx:37
 AliITSpList.cxx:38
 AliITSpList.cxx:39
 AliITSpList.cxx:40
 AliITSpList.cxx:41
 AliITSpList.cxx:42
 AliITSpList.cxx:43
 AliITSpList.cxx:44
 AliITSpList.cxx:45
 AliITSpList.cxx:46
 AliITSpList.cxx:47
 AliITSpList.cxx:48
 AliITSpList.cxx:49
 AliITSpList.cxx:50
 AliITSpList.cxx:51
 AliITSpList.cxx:52
 AliITSpList.cxx:53
 AliITSpList.cxx:54
 AliITSpList.cxx:55
 AliITSpList.cxx:56
 AliITSpList.cxx:57
 AliITSpList.cxx:58
 AliITSpList.cxx:59
 AliITSpList.cxx:60
 AliITSpList.cxx:61
 AliITSpList.cxx:62
 AliITSpList.cxx:63
 AliITSpList.cxx:64
 AliITSpList.cxx:65
 AliITSpList.cxx:66
 AliITSpList.cxx:67
 AliITSpList.cxx:68
 AliITSpList.cxx:69
 AliITSpList.cxx:70
 AliITSpList.cxx:71
 AliITSpList.cxx:72
 AliITSpList.cxx:73
 AliITSpList.cxx:74
 AliITSpList.cxx:75
 AliITSpList.cxx:76
 AliITSpList.cxx:77
 AliITSpList.cxx:78
 AliITSpList.cxx:79
 AliITSpList.cxx:80
 AliITSpList.cxx:81
 AliITSpList.cxx:82
 AliITSpList.cxx:83
 AliITSpList.cxx:84
 AliITSpList.cxx:85
 AliITSpList.cxx:86
 AliITSpList.cxx:87
 AliITSpList.cxx:88
 AliITSpList.cxx:89
 AliITSpList.cxx:90
 AliITSpList.cxx:91
 AliITSpList.cxx:92
 AliITSpList.cxx:93
 AliITSpList.cxx:94
 AliITSpList.cxx:95
 AliITSpList.cxx:96
 AliITSpList.cxx:97
 AliITSpList.cxx:98
 AliITSpList.cxx:99
 AliITSpList.cxx:100
 AliITSpList.cxx:101
 AliITSpList.cxx:102
 AliITSpList.cxx:103
 AliITSpList.cxx:104
 AliITSpList.cxx:105
 AliITSpList.cxx:106
 AliITSpList.cxx:107
 AliITSpList.cxx:108
 AliITSpList.cxx:109
 AliITSpList.cxx:110
 AliITSpList.cxx:111
 AliITSpList.cxx:112
 AliITSpList.cxx:113
 AliITSpList.cxx:114
 AliITSpList.cxx:115
 AliITSpList.cxx:116
 AliITSpList.cxx:117
 AliITSpList.cxx:118
 AliITSpList.cxx:119
 AliITSpList.cxx:120
 AliITSpList.cxx:121
 AliITSpList.cxx:122
 AliITSpList.cxx:123
 AliITSpList.cxx:124
 AliITSpList.cxx:125
 AliITSpList.cxx:126
 AliITSpList.cxx:127
 AliITSpList.cxx:128
 AliITSpList.cxx:129
 AliITSpList.cxx:130
 AliITSpList.cxx:131
 AliITSpList.cxx:132
 AliITSpList.cxx:133
 AliITSpList.cxx:134
 AliITSpList.cxx:135
 AliITSpList.cxx:136
 AliITSpList.cxx:137
 AliITSpList.cxx:138
 AliITSpList.cxx:139
 AliITSpList.cxx:140
 AliITSpList.cxx:141
 AliITSpList.cxx:142
 AliITSpList.cxx:143
 AliITSpList.cxx:144
 AliITSpList.cxx:145
 AliITSpList.cxx:146
 AliITSpList.cxx:147
 AliITSpList.cxx:148
 AliITSpList.cxx:149
 AliITSpList.cxx:150
 AliITSpList.cxx:151
 AliITSpList.cxx:152
 AliITSpList.cxx:153
 AliITSpList.cxx:154
 AliITSpList.cxx:155
 AliITSpList.cxx:156
 AliITSpList.cxx:157
 AliITSpList.cxx:158
 AliITSpList.cxx:159
 AliITSpList.cxx:160
 AliITSpList.cxx:161
 AliITSpList.cxx:162
 AliITSpList.cxx:163
 AliITSpList.cxx:164
 AliITSpList.cxx:165
 AliITSpList.cxx:166
 AliITSpList.cxx:167
 AliITSpList.cxx:168
 AliITSpList.cxx:169
 AliITSpList.cxx:170
 AliITSpList.cxx:171
 AliITSpList.cxx:172
 AliITSpList.cxx:173
 AliITSpList.cxx:174
 AliITSpList.cxx:175
 AliITSpList.cxx:176
 AliITSpList.cxx:177
 AliITSpList.cxx:178
 AliITSpList.cxx:179
 AliITSpList.cxx:180
 AliITSpList.cxx:181
 AliITSpList.cxx:182
 AliITSpList.cxx:183
 AliITSpList.cxx:184
 AliITSpList.cxx:185
 AliITSpList.cxx:186
 AliITSpList.cxx:187
 AliITSpList.cxx:188
 AliITSpList.cxx:189
 AliITSpList.cxx:190
 AliITSpList.cxx:191
 AliITSpList.cxx:192
 AliITSpList.cxx:193
 AliITSpList.cxx:194
 AliITSpList.cxx:195
 AliITSpList.cxx:196
 AliITSpList.cxx:197
 AliITSpList.cxx:198
 AliITSpList.cxx:199
 AliITSpList.cxx:200
 AliITSpList.cxx:201
 AliITSpList.cxx:202
 AliITSpList.cxx:203
 AliITSpList.cxx:204
 AliITSpList.cxx:205
 AliITSpList.cxx:206