ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

///////////////////////////////////////////////////////////////////////////////
//
//     Data container for relative ITS-TPC alignment analysis
//     see info in the implementation file
//
//     Origin: Mikolaj Krzewicki, Nikhef, Mikolaj.Krzewicki@cern.ch
//
//////////////////////////////////////////////////////////////////////////////

class TObjArray;
class TGraphErrors;
class TNamed;
class TTree;
class TCollection;
class AliESDEvent;
class TBrowser;
class TList;
#include <AliRelAlignerKalman.h>

class AliRelAlignerKalmanArray:public TNamed
{
public:
  AliRelAlignerKalmanArray();
  AliRelAlignerKalmanArray(Int_t t0, Int_t tend, Int_t slotwidth);
  virtual ~AliRelAlignerKalmanArray();
  AliRelAlignerKalmanArray& operator=(const AliRelAlignerKalmanArray& a );
  AliRelAlignerKalmanArray(const AliRelAlignerKalmanArray& a);
  void SetupArray(Int_t t0, Int_t tend, Int_t slotwidth);
  
  AliRelAlignerKalman* GetAligner(UInt_t timestamp);
  AliRelAlignerKalman* GetAligner(AliESDEvent* event);
  AliRelAlignerKalman* GetAlignerTemplate();
  Long64_t Merge( TCollection* list );
  AliRelAlignerKalman* At( Int_t i ) const;
  AliRelAlignerKalman* operator[](Int_t i) const;
  AliRelAlignerKalman*& operator[](Int_t i);
  Int_t GetEntries() const;
  Int_t GetSize() const {return fSize;}
  AliRelAlignerKalman* Last() const;
  UInt_t GetT0() const {return fT0;}
  UInt_t GetTimebinWidth() const {return fTimebinWidth;}
  Int_t Timebin( UInt_t timestamp ) const;
  virtual void Print(Option_t* option="") const;
  void FillTree( TTree* tree )const ;
  TGraphErrors* MakeGraph(Int_t iparam) const;
  AliRelAlignerKalmanArray* MakeSmoothArray() const;
  void SetOutRejSigmaOnMerge(Double_t s) {fOutRejSigmaOnMerge=s;}
  void SetOutRejSigmaOnSmooth(Double_t s) {fOutRejSigmaOnSmooth=s;}
  void Browse(TBrowser *b);

private:
  void ClearContents();
  void PropagateToTime(AliRelAlignerKalman* al, UInt_t timestamp ) const;

  UInt_t fT0;                            //time of first time slot
  Int_t fTimebinWidth;                   //width of the time bin in seconds
  Int_t fSize;                           //size
  Double_t fOutRejSigmaOnMerge;          //how much outlier rejection on merge
  Double_t fOutRejSigmaOnSmooth;          //how much outlier rejection on Smooth
  AliRelAlignerKalman fAlignerTemplate;  //template
  AliRelAlignerKalman** fPArray;         //[fSize] an array of aligners
  TList* fListOfGraphs;                  //!hold the graphs
  
  ClassDef(AliRelAlignerKalmanArray,5);   //AliRelAlignerKalman class
};


 AliRelAlignerKalmanArray.h:1
 AliRelAlignerKalmanArray.h:2
 AliRelAlignerKalmanArray.h:3
 AliRelAlignerKalmanArray.h:4
 AliRelAlignerKalmanArray.h:5
 AliRelAlignerKalmanArray.h:6
 AliRelAlignerKalmanArray.h:7
 AliRelAlignerKalmanArray.h:8
 AliRelAlignerKalmanArray.h:9
 AliRelAlignerKalmanArray.h:10
 AliRelAlignerKalmanArray.h:11
 AliRelAlignerKalmanArray.h:12
 AliRelAlignerKalmanArray.h:13
 AliRelAlignerKalmanArray.h:14
 AliRelAlignerKalmanArray.h:15
 AliRelAlignerKalmanArray.h:16
 AliRelAlignerKalmanArray.h:17
 AliRelAlignerKalmanArray.h:18
 AliRelAlignerKalmanArray.h:19
 AliRelAlignerKalmanArray.h:20
 AliRelAlignerKalmanArray.h:21
 AliRelAlignerKalmanArray.h:22
 AliRelAlignerKalmanArray.h:23
 AliRelAlignerKalmanArray.h:24
 AliRelAlignerKalmanArray.h:25
 AliRelAlignerKalmanArray.h:26
 AliRelAlignerKalmanArray.h:27
 AliRelAlignerKalmanArray.h:28
 AliRelAlignerKalmanArray.h:29
 AliRelAlignerKalmanArray.h:30
 AliRelAlignerKalmanArray.h:31
 AliRelAlignerKalmanArray.h:32
 AliRelAlignerKalmanArray.h:33
 AliRelAlignerKalmanArray.h:34
 AliRelAlignerKalmanArray.h:35
 AliRelAlignerKalmanArray.h:36
 AliRelAlignerKalmanArray.h:37
 AliRelAlignerKalmanArray.h:38
 AliRelAlignerKalmanArray.h:39
 AliRelAlignerKalmanArray.h:40
 AliRelAlignerKalmanArray.h:41
 AliRelAlignerKalmanArray.h:42
 AliRelAlignerKalmanArray.h:43
 AliRelAlignerKalmanArray.h:44
 AliRelAlignerKalmanArray.h:45
 AliRelAlignerKalmanArray.h:46
 AliRelAlignerKalmanArray.h:47
 AliRelAlignerKalmanArray.h:48
 AliRelAlignerKalmanArray.h:49
 AliRelAlignerKalmanArray.h:50
 AliRelAlignerKalmanArray.h:51
 AliRelAlignerKalmanArray.h:52
 AliRelAlignerKalmanArray.h:53
 AliRelAlignerKalmanArray.h:54
 AliRelAlignerKalmanArray.h:55
 AliRelAlignerKalmanArray.h:56
 AliRelAlignerKalmanArray.h:57
 AliRelAlignerKalmanArray.h:58
 AliRelAlignerKalmanArray.h:59
 AliRelAlignerKalmanArray.h:60
 AliRelAlignerKalmanArray.h:61
 AliRelAlignerKalmanArray.h:62
 AliRelAlignerKalmanArray.h:63
 AliRelAlignerKalmanArray.h:64
 AliRelAlignerKalmanArray.h:65
 AliRelAlignerKalmanArray.h:66
 AliRelAlignerKalmanArray.h:67
 AliRelAlignerKalmanArray.h:68
 AliRelAlignerKalmanArray.h:69
 AliRelAlignerKalmanArray.h:70