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: AliITSUSensMap.cxx 39464 2010-03-09 14:59:19Z masera $ */

//***********************************************************************
//
// It consist of a TClonesArray of 
// AliITSUSensMapItem objects
// This array can be accessed via 2 indexed
// it is used at digitization level by 
// all the 3 ITS subdetectors
//
//
// The items should be added to the map like this:
// map->RegisterItem( new(map->GetFree()) ItemConstructor(...) );
//
// The items must be sortable with the same sorting algorithm like 
// for AliITSUSensMap::IsSortable,IsEqual,Compare
//
// ***********************************************************************

#include "AliITSUSensMap.h"
#include "AliLog.h"
//______________________________________________________________________

ClassImp(AliITSUSensMap)
//______________________________________________________________________
AliITSUSensMap::AliITSUSensMap() 
:  fDimCol(0)
  ,fDimRow(0)
  ,fDimCycle(0)
  ,fItems(0)
  ,fBTree(0)
{
  // Default constructor
}

//______________________________________________________________________
AliITSUSensMap::AliITSUSensMap(const char* className, UInt_t dimCol,UInt_t dimRow,UInt_t dimCycle)
  :fDimCol(dimCol)
  ,fDimRow(dimRow)
  ,fDimCycle(dimCycle)
  ,fItems(new TClonesArray(className,100))
  ,fBTree(new TBtree())
{
  // Standard constructor
}

//______________________________________________________________________
AliITSUSensMap::~AliITSUSensMap() 
{
  // Default destructor
  delete fItems;
  delete fBTree;
}


//______________________________________________________________________
AliITSUSensMap::AliITSUSensMap(const AliITSUSensMap &source)
  :TObject(source)
  ,fDimCol(source.fDimCol)
  ,fDimRow(source.fDimRow)
  ,fDimCycle(source.fDimCycle)
  ,fItems( source.fItems ? new TClonesArray(*source.fItems) : 0)
  ,fBTree( 0 )
{
  if (source.fBTree) {
    fBTree = new TBtree();
    if (fItems) {
      for (int i=fItems->GetEntriesFast();i--;) {
	TObject* obj = fItems->At(i);
	if (obj && ! IsDisabled(obj)) continue;
	RegisterItem(obj);
      }
    }
  }
}

//______________________________________________________________________
AliITSUSensMap& AliITSUSensMap::operator=(const AliITSUSensMap &source)
{
  // = operator
  if (this!=&source) {
    this->~AliITSUSensMap();
    new(this) AliITSUSensMap(source);
  }
  return *this;
}

//______________________________________________________________________
void AliITSUSensMap::Clear(Option_t*) 
{
  // clean everything
  if (fItems) fItems->Clear();
  if (fBTree) fBTree->Clear();
}

//______________________________________________________________________
void AliITSUSensMap::DeleteItem(UInt_t col,UInt_t row,Int_t cycle)
{
  // Delete a particular AliITSUSensMapItems.
  SetUniqueID( GetIndex(col,row,cycle) );
  TObject* fnd = fBTree->FindObject(this);
  if (!fnd) return;
  Disable(fnd);
  fBTree->Remove(fnd);
}

//______________________________________________________________________
void AliITSUSensMap::DeleteItem(TObject* obj)
{
  // Delete a particular AliITSUSensMapItems.
  TObject* fnd = fBTree->FindObject(obj);
  if (!fnd) return;
  Disable(fnd);
  fBTree->Remove(fnd);
}

//______________________________________________________________________
void  AliITSUSensMap::SetDimensions(UInt_t dimCol,UInt_t dimRow,UInt_t dimCycle) 
{
  // set dimensions for current sensor
  const UInt_t kMaxPackDim = 0xffffffff;
  fDimCol = dimCol; 
  fDimRow = dimRow; 
  fDimCycle=dimCycle;
  if ((fDimCol*fDimRow*fDimCycle)>kMaxPackDim/2) AliFatal(Form("Dimension %dx%dx%d*2 cannot be packed to UInt_t",fDimCol,fDimRow,fDimCycle));
}

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