ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, 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$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Implementation of the class with array of AliITSDriftSpeedSDD //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "AliITSDriftSpeedArraySDD.h"
#include "AliITSDriftSpeedSDD.h"
#include "AliLog.h"

ClassImp(AliITSDriftSpeedArraySDD)
//______________________________________________________________________
AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD():
TObject(),
fNEvents(0),
fDriftSpeedSDD(10),
fInjectorStatus(0x3E000000){
  // default constructor
}
//______________________________________________________________________
AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv):
TObject(),
fNEvents(0),
fDriftSpeedSDD(numEv),
fInjectorStatus(0x3E000000){
  // standard constructor
}
//______________________________________________________________________
void AliITSDriftSpeedArraySDD::AddDriftSpeed(AliITSDriftSpeedSDD* drSpeed){
  // adds an AliITSDriftSpeedSDD object in the array
  fDriftSpeedSDD.AddLast(drSpeed);
  fNEvents++;
}
//______________________________________________________________________
void AliITSDriftSpeedArraySDD::PrintAll() const{
  // print drift speed parameters for all elements in the array
  printf("Array Size=%d\n",fDriftSpeedSDD.GetSize());
  printf("Array Elements =%d\n",fNEvents);
  printf("Injector Status =%d\n",fInjectorStatus);
  for(Int_t i=0;i<fNEvents; i++){
    printf("     ====== Array el. #%d ======\n",i);
    AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i);
    if(d) d->PrintDriftSpeedParameters();
  }
}
//______________________________________________________________________
UInt_t AliITSDriftSpeedArraySDD::GetTimestamp(Int_t iElement){
  // returns time stamp
  if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort();
  if(fNEvents<iElement) return 0;
  AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(iElement);
  return d->GetEventTimestamp();
}
//______________________________________________________________________
Double_t AliITSDriftSpeedArraySDD::GetDriftSpeed(Int_t iEvent, Double_t iAnode){
  // returns drift speed for given event number and anode
  if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort();
  if(fNEvents==1){
    AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(0);
    return d->GetDriftSpeedAtAnode(iAnode);
  }else{
    Int_t nInjEv1=-1;
    Int_t nInjEv2=-1;
    AliITSDriftSpeedSDD *d1=NULL;
    AliITSDriftSpeedSDD *d2=NULL;
    for(Int_t i=0;i<fNEvents; i++){
      d1=d2;
      d2=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i);
      nInjEv1=nInjEv2;
      if(d2!=0){
	nInjEv2=d2->GetEventNumber();
	if(nInjEv2>=iEvent){
	  if(i==0) d1=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i+1);
	  nInjEv1=d1->GetEventNumber();
	  break;
	}
      }
    }
    if(nInjEv1>=0 && nInjEv2>=0 && nInjEv1!=nInjEv2){
      Double_t v1=d1->GetDriftSpeedAtAnode(iAnode);
      Double_t v2=d2->GetDriftSpeedAtAnode(iAnode);
      Double_t vdrift=(v2-v1)*(iEvent-nInjEv1)/(nInjEv2-nInjEv1)+v1;
      return vdrift;
    }
  }
  AliWarning("Vdrift interpolation error\n");
  return -999.;
}
 AliITSDriftSpeedArraySDD.cxx:1
 AliITSDriftSpeedArraySDD.cxx:2
 AliITSDriftSpeedArraySDD.cxx:3
 AliITSDriftSpeedArraySDD.cxx:4
 AliITSDriftSpeedArraySDD.cxx:5
 AliITSDriftSpeedArraySDD.cxx:6
 AliITSDriftSpeedArraySDD.cxx:7
 AliITSDriftSpeedArraySDD.cxx:8
 AliITSDriftSpeedArraySDD.cxx:9
 AliITSDriftSpeedArraySDD.cxx:10
 AliITSDriftSpeedArraySDD.cxx:11
 AliITSDriftSpeedArraySDD.cxx:12
 AliITSDriftSpeedArraySDD.cxx:13
 AliITSDriftSpeedArraySDD.cxx:14
 AliITSDriftSpeedArraySDD.cxx:15
 AliITSDriftSpeedArraySDD.cxx:16
 AliITSDriftSpeedArraySDD.cxx:17
 AliITSDriftSpeedArraySDD.cxx:18
 AliITSDriftSpeedArraySDD.cxx:19
 AliITSDriftSpeedArraySDD.cxx:20
 AliITSDriftSpeedArraySDD.cxx:21
 AliITSDriftSpeedArraySDD.cxx:22
 AliITSDriftSpeedArraySDD.cxx:23
 AliITSDriftSpeedArraySDD.cxx:24
 AliITSDriftSpeedArraySDD.cxx:25
 AliITSDriftSpeedArraySDD.cxx:26
 AliITSDriftSpeedArraySDD.cxx:27
 AliITSDriftSpeedArraySDD.cxx:28
 AliITSDriftSpeedArraySDD.cxx:29
 AliITSDriftSpeedArraySDD.cxx:30
 AliITSDriftSpeedArraySDD.cxx:31
 AliITSDriftSpeedArraySDD.cxx:32
 AliITSDriftSpeedArraySDD.cxx:33
 AliITSDriftSpeedArraySDD.cxx:34
 AliITSDriftSpeedArraySDD.cxx:35
 AliITSDriftSpeedArraySDD.cxx:36
 AliITSDriftSpeedArraySDD.cxx:37
 AliITSDriftSpeedArraySDD.cxx:38
 AliITSDriftSpeedArraySDD.cxx:39
 AliITSDriftSpeedArraySDD.cxx:40
 AliITSDriftSpeedArraySDD.cxx:41
 AliITSDriftSpeedArraySDD.cxx:42
 AliITSDriftSpeedArraySDD.cxx:43
 AliITSDriftSpeedArraySDD.cxx:44
 AliITSDriftSpeedArraySDD.cxx:45
 AliITSDriftSpeedArraySDD.cxx:46
 AliITSDriftSpeedArraySDD.cxx:47
 AliITSDriftSpeedArraySDD.cxx:48
 AliITSDriftSpeedArraySDD.cxx:49
 AliITSDriftSpeedArraySDD.cxx:50
 AliITSDriftSpeedArraySDD.cxx:51
 AliITSDriftSpeedArraySDD.cxx:52
 AliITSDriftSpeedArraySDD.cxx:53
 AliITSDriftSpeedArraySDD.cxx:54
 AliITSDriftSpeedArraySDD.cxx:55
 AliITSDriftSpeedArraySDD.cxx:56
 AliITSDriftSpeedArraySDD.cxx:57
 AliITSDriftSpeedArraySDD.cxx:58
 AliITSDriftSpeedArraySDD.cxx:59
 AliITSDriftSpeedArraySDD.cxx:60
 AliITSDriftSpeedArraySDD.cxx:61
 AliITSDriftSpeedArraySDD.cxx:62
 AliITSDriftSpeedArraySDD.cxx:63
 AliITSDriftSpeedArraySDD.cxx:64
 AliITSDriftSpeedArraySDD.cxx:65
 AliITSDriftSpeedArraySDD.cxx:66
 AliITSDriftSpeedArraySDD.cxx:67
 AliITSDriftSpeedArraySDD.cxx:68
 AliITSDriftSpeedArraySDD.cxx:69
 AliITSDriftSpeedArraySDD.cxx:70
 AliITSDriftSpeedArraySDD.cxx:71
 AliITSDriftSpeedArraySDD.cxx:72
 AliITSDriftSpeedArraySDD.cxx:73
 AliITSDriftSpeedArraySDD.cxx:74
 AliITSDriftSpeedArraySDD.cxx:75
 AliITSDriftSpeedArraySDD.cxx:76
 AliITSDriftSpeedArraySDD.cxx:77
 AliITSDriftSpeedArraySDD.cxx:78
 AliITSDriftSpeedArraySDD.cxx:79
 AliITSDriftSpeedArraySDD.cxx:80
 AliITSDriftSpeedArraySDD.cxx:81
 AliITSDriftSpeedArraySDD.cxx:82
 AliITSDriftSpeedArraySDD.cxx:83
 AliITSDriftSpeedArraySDD.cxx:84
 AliITSDriftSpeedArraySDD.cxx:85
 AliITSDriftSpeedArraySDD.cxx:86
 AliITSDriftSpeedArraySDD.cxx:87
 AliITSDriftSpeedArraySDD.cxx:88
 AliITSDriftSpeedArraySDD.cxx:89
 AliITSDriftSpeedArraySDD.cxx:90
 AliITSDriftSpeedArraySDD.cxx:91
 AliITSDriftSpeedArraySDD.cxx:92
 AliITSDriftSpeedArraySDD.cxx:93
 AliITSDriftSpeedArraySDD.cxx:94
 AliITSDriftSpeedArraySDD.cxx:95
 AliITSDriftSpeedArraySDD.cxx:96
 AliITSDriftSpeedArraySDD.cxx:97
 AliITSDriftSpeedArraySDD.cxx:98
 AliITSDriftSpeedArraySDD.cxx:99
 AliITSDriftSpeedArraySDD.cxx:100
 AliITSDriftSpeedArraySDD.cxx:101
 AliITSDriftSpeedArraySDD.cxx:102
 AliITSDriftSpeedArraySDD.cxx:103
 AliITSDriftSpeedArraySDD.cxx:104
 AliITSDriftSpeedArraySDD.cxx:105
 AliITSDriftSpeedArraySDD.cxx:106