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

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Time Projection Chamber clusters objects                                //
//
//  Origin: Marian Ivanov , GSI Darmstadt
//                                                                           //
//                                                                           //
//                                                                          //
///////////////////////////////////////////////////////////////////////////////
#include "AliTPCParam.h" 
#include "AliTPCPRF2D.h"

#include "TObjArray.h"
#include "AliSegmentID.h" 
#include "AliSegmentArray.h" 

#include "AliDigits.h"
#include "AliSimDigits.h"
#include "AliDigitsArray.h" 
#include "AliTPCDigitsArray.h"
#include <TDirectory.h>



//_____________________________________________________________________________

ClassImp(AliTPCDigitsArray) 

AliTPCDigitsArray::AliTPCDigitsArray(Bool_t sim)
                  :AliDigitsArray(),
		   fBSim(kFALSE),
		   fCompression(0),
		   fTrackLevel(0)
{
  //
  //default constructor
  fParam = 0;
  fBSim = sim;
  if ( sim == kTRUE) SetClass("AliSimDigits");
  else
    SetClass("AliDigits");
  fParam = 0;
  //  fPRF   = 0;
  //fRF    = 0;  
  fCompression = 1;
  fTrackLevel = 3;
}

AliTPCDigitsArray::~AliTPCDigitsArray()
{
  //
  
  //
}

AliDigits *  AliTPCDigitsArray::CreateRow(Int_t sector, Int_t row)
{
  //
  //create digits row  
  //
  //if row just exist - delete it
  AliTPCParam * param = (AliTPCParam*)fParam;
  Int_t index = param->GetIndex(sector,row);  
  AliDigits * dig = (AliDigits *)(*this)[index];
  if (dig !=0) delete dig;

  dig = (AliDigits *) AddSegment(index);
  if (dig == 0) return 0;
  dig->Allocate(param->GetMaxTBin(),param->GetNPads(sector,row));  
  if (fBSim == kTRUE) ((AliSimDigits*) dig)->AllocateTrack(fTrackLevel);
  return dig;
}


AliDigits * AliTPCDigitsArray::GetRow(Int_t sector,Int_t row)
{
  //
  //return clusters ((AliTPCDigitsRow *) per given sector and padrow
  //
  if (fParam==0) return 0;
  Int_t index = ((AliTPCParam*)fParam)->GetIndex(sector,row);  
  return (AliDigits *)(*this)[index];
}

AliDigits * AliTPCDigitsArray::LoadRow(Int_t sector,Int_t row)
{
  //
  //return clusters ((AliTPCDigitsRow *) per given sector and padrow
  //
  if (fParam==0) return 0;
  Int_t index = ((AliTPCParam*)fParam)->GetIndex(sector,row);  
  return (AliDigits *)LoadSegment(index);
}

Bool_t  AliTPCDigitsArray::StoreRow(Int_t sector,Int_t row)
{
  //
  //return clusters ((AliTPCDigitsRow *) per given sector and padrow
  //
  AliTPCParam * param = (AliTPCParam*)fParam;
  if (fParam==0) return 0;
  Int_t index = param->GetIndex(sector,row);  
  ( (AliDigits *)At(index))->CompresBuffer(fCompression,param->GetZeroSup());
  if (fBSim == kTRUE) ( (AliSimDigits *)At(index))->CompresTrackBuffer(1);
  StoreSegment(index);
  return kTRUE;
}

Bool_t  AliTPCDigitsArray::ClearRow(Int_t sector,Int_t row)
{
  //
  //return clusters ((AliTPCDigitsRow *) per given sector and padrow
  //
  if (fParam==0) return 0;
  Int_t index = ((AliTPCParam*)fParam)->GetIndex(sector,row);  
  ClearSegment(index);
  return kTRUE;
}



Bool_t AliTPCDigitsArray::Setup(AliDetectorParam *param)
{
  //
  //setup  function to adjust array parameters
  //
  if (param==0) return kFALSE;
  if (fParam !=0) delete fParam;
  //  fParam = new AliTPCParam((AliTPCParam&)(*param));
  fParam = param;
  return MakeArray(((AliTPCParam*)fParam)->GetNRowsTotal());
}

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