ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2003, 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.                  *
 **************************************************************************/

//-----------------------------------------------------------------
//           Implementation of the Event Time class
//           for the Event Data Summary class
//           This class contains the Event Time
//           as estimated by the TOF combinatorial algorithm
// Origin: A.De Caro, decaro@sa.infn.it
//-----------------------------------------------------------------

//---- standard headers ----
#include "Riostream.h"
//---- Root headers --------
#include "TArrayF.h"
#include "TArrayI.h"
//---- AliRoot headers -----
#include "AliTOFHeader.h"


ClassImp(AliTOFHeader)

//--------------------------------------------------------------------------
AliTOFHeader::AliTOFHeader() :
  TObject(),
  fDefaultEventTimeValue(0.),
  fDefaultEventTimeRes(0.),
  fNbins(0),
  fEventTimeValues(0),
  fEventTimeRes(0),
  fNvalues(0),
  fTOFtimeResolution(0.),
  fT0spread(0.),
  fNumberOfTOFclusters(-1),
  fNumberOfTOFtrgPads(-1),
  fTrigMask(new AliTOFTriggerMask())
{
  //
  // Default Constructor
  //

}

//--------------------------------------------------------------------------
AliTOFHeader::AliTOFHeader(Float_t defEvTime, Float_t defResEvTime,
			   Int_t nDifPbins, Float_t *times, Float_t *res,
			   Int_t *nPbin, Float_t tofTimeRes, Float_t t0spread) :
  TObject(),
  fDefaultEventTimeValue(defEvTime),
  fDefaultEventTimeRes(defResEvTime),
  fNbins(nDifPbins),
  fEventTimeValues(0),
  fEventTimeRes(0),
  fNvalues(0),
  fTOFtimeResolution(tofTimeRes),
  fT0spread(t0spread),
  fNumberOfTOFclusters(-1),
  fNumberOfTOFtrgPads(-1),
  fTrigMask(new AliTOFTriggerMask())
{
  //
  // Constructor for TOF header
  //

  if (fNbins>0) {
    fEventTimeValues = new TArrayF(fNbins);
    fEventTimeRes = new TArrayF(fNbins);
    fNvalues = new TArrayI(fNbins);
    for (Int_t ii=0; ii<fNbins; ii++) {
      fEventTimeValues->SetAt(times[ii],ii);
      fEventTimeRes->SetAt(res[ii],ii);
      fNvalues->SetAt(nPbin[ii],ii);
    }
  }

}

//--------------------------------------------------------------------------
AliTOFHeader::AliTOFHeader(const AliTOFHeader &source):
  TObject(source),
  fDefaultEventTimeValue(source.fDefaultEventTimeValue),
  fDefaultEventTimeRes(source.fDefaultEventTimeRes),
  fNbins(source.fNbins),
  fEventTimeValues(0),
  fEventTimeRes(0),
  fNvalues(0),
  fTOFtimeResolution(source.fTOFtimeResolution),
  fT0spread(source.fT0spread),
  fNumberOfTOFclusters(source.fNumberOfTOFclusters),
  fNumberOfTOFtrgPads(source.fNumberOfTOFtrgPads),
  fTrigMask(NULL)
{
  //
  // Copy constructor
  //

  if (fNbins>0) {
    fEventTimeValues = new TArrayF(fNbins);
    fEventTimeRes = new TArrayF(fNbins);
    fNvalues = new TArrayI(fNbins);
    for(Int_t i=0;i<fNbins;i++) {
      (*fEventTimeValues)[i]=source.fEventTimeValues->At(i);
      (*fEventTimeRes)[i]=source.fEventTimeRes->At(i);
      (*fNvalues)[i]=source.fNvalues->At(i);
    }
  }

  if(source.fTrigMask) fTrigMask = new AliTOFTriggerMask(*(source.fTrigMask));
  else fTrigMask = new AliTOFTriggerMask();
}
//--------------------------------------------------------------------------
AliTOFHeader &AliTOFHeader::operator=(const AliTOFHeader &source){
  //
  // assignment operator
  //
  if(&source != this){
    TObject::operator=(source);

    fDefaultEventTimeValue=source.fDefaultEventTimeValue;
    fDefaultEventTimeRes=source.fDefaultEventTimeRes;
    fNbins=source.fNbins;
    fTOFtimeResolution=source.fTOFtimeResolution;
    fT0spread=source.fT0spread;
    fNumberOfTOFclusters=source.fNumberOfTOFclusters;
    fNumberOfTOFtrgPads=source.fNumberOfTOFtrgPads;
    
    if (fNbins>0) {
      fEventTimeValues = new TArrayF(fNbins);
      fEventTimeRes = new TArrayF(fNbins);
      fNvalues = new TArrayI(fNbins);
      for(Int_t i=0;i<fNbins;i++) {
	(*fEventTimeValues)[i]=source.fEventTimeValues->At(i);
	(*fEventTimeRes)[i]=source.fEventTimeRes->At(i);
	(*fNvalues)[i]=source.fNvalues->At(i);
      }
    } else {
      fEventTimeValues = 0;
      fEventTimeRes = 0;
      fNvalues = 0;
    }

    if(source.fTrigMask && fTrigMask) *fTrigMask = *(source.fTrigMask);
    else if(! fTrigMask) fTrigMask = new AliTOFTriggerMask();
  }
  return *this;
}
//--------------------------------------------------------------------------
void AliTOFHeader::Copy(TObject &obj) const {
  
  // this overwrites the virtual TOBject::Copy()
  // to allow run time copying without casting
  // in AliESDEvent

  if (this==&obj) return;
  AliTOFHeader *robj = dynamic_cast<AliTOFHeader*>(&obj);
  if (!robj) return; // not an AliTOFHeader
  *robj = *this;

}

//--------------------------------------------------------------------------
AliTOFHeader::~AliTOFHeader()
{

  fNbins = 0;
  if (fEventTimeValues) {
    delete fEventTimeValues;
    fEventTimeValues=0;
  }
  if (fEventTimeRes) {
    delete fEventTimeRes;
    fEventTimeRes=0;
  }
  if (fNvalues) {
    delete fNvalues;
    fNvalues=0;
  }
  if(fTrigMask){
    delete fTrigMask;
    fTrigMask=NULL;
  }

}

//--------------------------------------------------------------------------
void AliTOFHeader::SetNbins(Int_t nbins)
{
  //
  //
  //

  fNbins=nbins;
  if (!fEventTimeValues)
    fEventTimeValues = new TArrayF(nbins);
  else
    fEventTimeValues->Set(nbins);

  if (!fEventTimeRes)
    fEventTimeRes = new TArrayF(nbins);
  else
    fEventTimeRes->Set(nbins);

  if (!fNvalues)
    fNvalues = new TArrayI(nbins);
  else
    fNvalues->Set(nbins);

}
//--------------------------------------------------------------------------
void AliTOFHeader::SetEventTimeValues(TArrayF *arr)
{
  //
  //
  //

  fNbins=arr->GetSize();

  if (!fEventTimeValues)
    fEventTimeValues = new TArrayF(fNbins);
  else
    fEventTimeValues->Set(fNbins);

  for (Int_t ii=0; ii<fNbins; ii++)
    fEventTimeValues->SetAt(arr->GetAt(ii),ii);

}
//--------------------------------------------------------------------------
void AliTOFHeader::SetEventTimeRes(TArrayF *arr)
{
  //
  //
  //

  fNbins=arr->GetSize();

  if (!fEventTimeRes)
    fEventTimeRes = new TArrayF(fNbins);
  else
    fEventTimeRes->Set(fNbins);

  for (Int_t ii=0; ii<fNbins; ii++)
    fEventTimeRes->SetAt(arr->GetAt(ii),ii);

}
//--------------------------------------------------------------------------
void AliTOFHeader::SetNvalues(TArrayI *arr)
{
  //
  //
  //

  fNbins=arr->GetSize();

  if (!fNvalues)
    fNvalues = new TArrayI(fNbins);
  else
    fNvalues->Set(fNbins);

  for (Int_t ii=0; ii<fNbins; ii++)
    fNvalues->SetAt(arr->GetAt(ii),ii);

}
 AliTOFHeader.cxx:1
 AliTOFHeader.cxx:2
 AliTOFHeader.cxx:3
 AliTOFHeader.cxx:4
 AliTOFHeader.cxx:5
 AliTOFHeader.cxx:6
 AliTOFHeader.cxx:7
 AliTOFHeader.cxx:8
 AliTOFHeader.cxx:9
 AliTOFHeader.cxx:10
 AliTOFHeader.cxx:11
 AliTOFHeader.cxx:12
 AliTOFHeader.cxx:13
 AliTOFHeader.cxx:14
 AliTOFHeader.cxx:15
 AliTOFHeader.cxx:16
 AliTOFHeader.cxx:17
 AliTOFHeader.cxx:18
 AliTOFHeader.cxx:19
 AliTOFHeader.cxx:20
 AliTOFHeader.cxx:21
 AliTOFHeader.cxx:22
 AliTOFHeader.cxx:23
 AliTOFHeader.cxx:24
 AliTOFHeader.cxx:25
 AliTOFHeader.cxx:26
 AliTOFHeader.cxx:27
 AliTOFHeader.cxx:28
 AliTOFHeader.cxx:29
 AliTOFHeader.cxx:30
 AliTOFHeader.cxx:31
 AliTOFHeader.cxx:32
 AliTOFHeader.cxx:33
 AliTOFHeader.cxx:34
 AliTOFHeader.cxx:35
 AliTOFHeader.cxx:36
 AliTOFHeader.cxx:37
 AliTOFHeader.cxx:38
 AliTOFHeader.cxx:39
 AliTOFHeader.cxx:40
 AliTOFHeader.cxx:41
 AliTOFHeader.cxx:42
 AliTOFHeader.cxx:43
 AliTOFHeader.cxx:44
 AliTOFHeader.cxx:45
 AliTOFHeader.cxx:46
 AliTOFHeader.cxx:47
 AliTOFHeader.cxx:48
 AliTOFHeader.cxx:49
 AliTOFHeader.cxx:50
 AliTOFHeader.cxx:51
 AliTOFHeader.cxx:52
 AliTOFHeader.cxx:53
 AliTOFHeader.cxx:54
 AliTOFHeader.cxx:55
 AliTOFHeader.cxx:56
 AliTOFHeader.cxx:57
 AliTOFHeader.cxx:58
 AliTOFHeader.cxx:59
 AliTOFHeader.cxx:60
 AliTOFHeader.cxx:61
 AliTOFHeader.cxx:62
 AliTOFHeader.cxx:63
 AliTOFHeader.cxx:64
 AliTOFHeader.cxx:65
 AliTOFHeader.cxx:66
 AliTOFHeader.cxx:67
 AliTOFHeader.cxx:68
 AliTOFHeader.cxx:69
 AliTOFHeader.cxx:70
 AliTOFHeader.cxx:71
 AliTOFHeader.cxx:72
 AliTOFHeader.cxx:73
 AliTOFHeader.cxx:74
 AliTOFHeader.cxx:75
 AliTOFHeader.cxx:76
 AliTOFHeader.cxx:77
 AliTOFHeader.cxx:78
 AliTOFHeader.cxx:79
 AliTOFHeader.cxx:80
 AliTOFHeader.cxx:81
 AliTOFHeader.cxx:82
 AliTOFHeader.cxx:83
 AliTOFHeader.cxx:84
 AliTOFHeader.cxx:85
 AliTOFHeader.cxx:86
 AliTOFHeader.cxx:87
 AliTOFHeader.cxx:88
 AliTOFHeader.cxx:89
 AliTOFHeader.cxx:90
 AliTOFHeader.cxx:91
 AliTOFHeader.cxx:92
 AliTOFHeader.cxx:93
 AliTOFHeader.cxx:94
 AliTOFHeader.cxx:95
 AliTOFHeader.cxx:96
 AliTOFHeader.cxx:97
 AliTOFHeader.cxx:98
 AliTOFHeader.cxx:99
 AliTOFHeader.cxx:100
 AliTOFHeader.cxx:101
 AliTOFHeader.cxx:102
 AliTOFHeader.cxx:103
 AliTOFHeader.cxx:104
 AliTOFHeader.cxx:105
 AliTOFHeader.cxx:106
 AliTOFHeader.cxx:107
 AliTOFHeader.cxx:108
 AliTOFHeader.cxx:109
 AliTOFHeader.cxx:110
 AliTOFHeader.cxx:111
 AliTOFHeader.cxx:112
 AliTOFHeader.cxx:113
 AliTOFHeader.cxx:114
 AliTOFHeader.cxx:115
 AliTOFHeader.cxx:116
 AliTOFHeader.cxx:117
 AliTOFHeader.cxx:118
 AliTOFHeader.cxx:119
 AliTOFHeader.cxx:120
 AliTOFHeader.cxx:121
 AliTOFHeader.cxx:122
 AliTOFHeader.cxx:123
 AliTOFHeader.cxx:124
 AliTOFHeader.cxx:125
 AliTOFHeader.cxx:126
 AliTOFHeader.cxx:127
 AliTOFHeader.cxx:128
 AliTOFHeader.cxx:129
 AliTOFHeader.cxx:130
 AliTOFHeader.cxx:131
 AliTOFHeader.cxx:132
 AliTOFHeader.cxx:133
 AliTOFHeader.cxx:134
 AliTOFHeader.cxx:135
 AliTOFHeader.cxx:136
 AliTOFHeader.cxx:137
 AliTOFHeader.cxx:138
 AliTOFHeader.cxx:139
 AliTOFHeader.cxx:140
 AliTOFHeader.cxx:141
 AliTOFHeader.cxx:142
 AliTOFHeader.cxx:143
 AliTOFHeader.cxx:144
 AliTOFHeader.cxx:145
 AliTOFHeader.cxx:146
 AliTOFHeader.cxx:147
 AliTOFHeader.cxx:148
 AliTOFHeader.cxx:149
 AliTOFHeader.cxx:150
 AliTOFHeader.cxx:151
 AliTOFHeader.cxx:152
 AliTOFHeader.cxx:153
 AliTOFHeader.cxx:154
 AliTOFHeader.cxx:155
 AliTOFHeader.cxx:156
 AliTOFHeader.cxx:157
 AliTOFHeader.cxx:158
 AliTOFHeader.cxx:159
 AliTOFHeader.cxx:160
 AliTOFHeader.cxx:161
 AliTOFHeader.cxx:162
 AliTOFHeader.cxx:163
 AliTOFHeader.cxx:164
 AliTOFHeader.cxx:165
 AliTOFHeader.cxx:166
 AliTOFHeader.cxx:167
 AliTOFHeader.cxx:168
 AliTOFHeader.cxx:169
 AliTOFHeader.cxx:170
 AliTOFHeader.cxx:171
 AliTOFHeader.cxx:172
 AliTOFHeader.cxx:173
 AliTOFHeader.cxx:174
 AliTOFHeader.cxx:175
 AliTOFHeader.cxx:176
 AliTOFHeader.cxx:177
 AliTOFHeader.cxx:178
 AliTOFHeader.cxx:179
 AliTOFHeader.cxx:180
 AliTOFHeader.cxx:181
 AliTOFHeader.cxx:182
 AliTOFHeader.cxx:183
 AliTOFHeader.cxx:184
 AliTOFHeader.cxx:185
 AliTOFHeader.cxx:186
 AliTOFHeader.cxx:187
 AliTOFHeader.cxx:188
 AliTOFHeader.cxx:189
 AliTOFHeader.cxx:190
 AliTOFHeader.cxx:191
 AliTOFHeader.cxx:192
 AliTOFHeader.cxx:193
 AliTOFHeader.cxx:194
 AliTOFHeader.cxx:195
 AliTOFHeader.cxx:196
 AliTOFHeader.cxx:197
 AliTOFHeader.cxx:198
 AliTOFHeader.cxx:199
 AliTOFHeader.cxx:200
 AliTOFHeader.cxx:201
 AliTOFHeader.cxx:202
 AliTOFHeader.cxx:203
 AliTOFHeader.cxx:204
 AliTOFHeader.cxx:205
 AliTOFHeader.cxx:206
 AliTOFHeader.cxx:207
 AliTOFHeader.cxx:208
 AliTOFHeader.cxx:209
 AliTOFHeader.cxx:210
 AliTOFHeader.cxx:211
 AliTOFHeader.cxx:212
 AliTOFHeader.cxx:213
 AliTOFHeader.cxx:214
 AliTOFHeader.cxx:215
 AliTOFHeader.cxx:216
 AliTOFHeader.cxx:217
 AliTOFHeader.cxx:218
 AliTOFHeader.cxx:219
 AliTOFHeader.cxx:220
 AliTOFHeader.cxx:221
 AliTOFHeader.cxx:222
 AliTOFHeader.cxx:223
 AliTOFHeader.cxx:224
 AliTOFHeader.cxx:225
 AliTOFHeader.cxx:226
 AliTOFHeader.cxx:227
 AliTOFHeader.cxx:228
 AliTOFHeader.cxx:229
 AliTOFHeader.cxx:230
 AliTOFHeader.cxx:231
 AliTOFHeader.cxx:232
 AliTOFHeader.cxx:233
 AliTOFHeader.cxx:234
 AliTOFHeader.cxx:235
 AliTOFHeader.cxx:236
 AliTOFHeader.cxx:237
 AliTOFHeader.cxx:238
 AliTOFHeader.cxx:239
 AliTOFHeader.cxx:240
 AliTOFHeader.cxx:241
 AliTOFHeader.cxx:242
 AliTOFHeader.cxx:243
 AliTOFHeader.cxx:244
 AliTOFHeader.cxx:245
 AliTOFHeader.cxx:246
 AliTOFHeader.cxx:247
 AliTOFHeader.cxx:248
 AliTOFHeader.cxx:249
 AliTOFHeader.cxx:250
 AliTOFHeader.cxx:251
 AliTOFHeader.cxx:252
 AliTOFHeader.cxx:253
 AliTOFHeader.cxx:254
 AliTOFHeader.cxx:255
 AliTOFHeader.cxx:256
 AliTOFHeader.cxx:257
 AliTOFHeader.cxx:258
 AliTOFHeader.cxx:259
 AliTOFHeader.cxx:260
 AliTOFHeader.cxx:261
 AliTOFHeader.cxx:262
 AliTOFHeader.cxx:263
 AliTOFHeader.cxx:264
 AliTOFHeader.cxx:265
 AliTOFHeader.cxx:266
 AliTOFHeader.cxx:267
 AliTOFHeader.cxx:268
 AliTOFHeader.cxx:269
 AliTOFHeader.cxx:270
 AliTOFHeader.cxx:271
 AliTOFHeader.cxx:272
 AliTOFHeader.cxx:273
 AliTOFHeader.cxx:274