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

/* $Id$ */

////////////////////////////////////////////////
//					      //
//  Manager class for TOF                     //
//  Interface :                               //
//  AliTOF                                    //
//  Associations between TOF related objects  //
//  are defined here                          //
// -- Authors: Pierella, Seganti, Vicinanza   //
//    (Bologna and Salerno University)        //
//                                            //
////////////////////////////////////////////////

#include "AliDetector.h"

#include "AliTOFTrigger.h"
#include "AliTOFDDLRawData.h"

class TDirectory;
class TFile;
class TFolder ;
class TString ;  

class AliTOFGeometry;

class AliTOF : public AliDetector {
public:
  AliTOF(); 
  AliTOF(const char *name, const char *title, Option_t *option="noTimeZero");

  virtual ~AliTOF() ;
// getters for AliTOF object status
  //Float_t GetTimeRes() const {return fTimeRes;};
  //Float_t GetChrgRes() const {return fChrgRes;};

  virtual void    SetTreeAddress();
  virtual void    AddHit(Int_t track, Int_t* vol, Float_t* hits);
  virtual void    AddT0Hit(Int_t track, Int_t* vol, Float_t* hits);
  virtual void    AddDigit(Int_t* /*tracks*/, Int_t* /*vol*/) {};
  virtual void    AddDigit(Int_t* tracks, Int_t* vol, Int_t* digits);
  virtual void    AddSDigit(Int_t tracknum, Int_t* vol, Int_t* digits);
  virtual void    CreateGeometry();
  virtual void    CreateMaterials(){};
  virtual void    Init();
  //virtual void    MakeBranch(Option_t* option, const char *file=0);
  virtual void    MakeBranch(Option_t *opt=" ");
  virtual void    Makehits(Bool_t hits=1);
  virtual void    FinishEvent();
  virtual Int_t   IsVersion() const =0;
  virtual void    StepManager()=0;
  virtual void    TOFpc(Float_t /*xtof*/, Float_t /*ytof*/, Float_t /*zlenC*/,
                        Float_t /*zlenB*/, Float_t /*zlenA*/, Float_t /*ztof0*/){};
  virtual void    TOFpc(Float_t /*xtof*/,  Float_t /*ytof*/, Float_t /*zlenA*/,
			Float_t /*zlenB*/){};
  virtual void    TOFpc(Float_t /*xtof*/,  Float_t /*ytof*/, Float_t /*zlenA*/){};
          void    CreateTOFFolders();
  Bool_t    CheckOverlap(const Int_t * const vol, Int_t* digit, Int_t Track);
  //virtual void    Hits2Digits();   
  virtual void    Hits2SDigits();
  virtual void    Hits2SDigits(Int_t evNumber1, Int_t evNumber2);
  virtual AliDigitizer* CreateDigitizer(AliDigitizationInput* digInput) const; 
  virtual void    Digits2Reco () {};
          void    Digits2Raw  ();
	  void    Raw2Digits  () {};
	  void    Raw2Digits  (AliRawReader* rawReader);
	  Bool_t  Raw2SDigits (AliRawReader* rawReader);
  virtual void    ResetHits   ();
  virtual void    ResetDigits ();
  virtual void    ResetSDigits();
  TClonesArray *SDigits() const {return fSDigits;}
  TClonesArray *ReconParticles() const {return fReconParticles;}
  void RecreateSDigitsArray();
  void CreateSDigitsArray();
  virtual void   SetTOFSectors(Int_t * const sectors);
  virtual void   GetTOFSectors(Int_t *sectors) const;
  virtual void   SetTOFHoles(Bool_t holes) { fTOFHoles = holes; };
  virtual Bool_t GetTOFHoles() const { return fTOFHoles; };
  AliTOFGeometry *GetGeometry() const { return fTOFGeometry; }; 

  // Trigger
  virtual AliTriggerDetector* CreateTriggerDetector() const
  	{return new AliTOFTrigger();}

protected:
  TFolder* fFGeom ;       //  Folder that holds the Geometry definition
  TClonesArray* fSDigits; //! List of summable digits
  Int_t   fNSDigits;      //! Number of sdigits
  TClonesArray* fReconParticles; // List of reconstructed particles

  //Float_t fGapA;     //  Gap beetween tilted strip in A-type plate
  //Float_t fGapB;     //  Gap beetween tilted strip in B-type plate

  //Float_t fTimeRes;  //  Time resolution of the TOF
  //Float_t fChrgRes;  //  Charge resolution of ADC

  Int_t   fIdSens;     // The unique identifier for sensitive volume FPAD 

  Bool_t  fTZero;      // Flag indicating if T0 is used
  Int_t fTOFSectors[18]; // Selecting TOF Sectors to be simulated
  Bool_t fTOFHoles; // Selecting geometry with and w/o holes
  AliTOFGeometry *fTOFGeometry; //The TOF Geometry parameters

  AliTOFDDLRawData fTOFRawWriter; // AliTOFDDLRawData variable
 
private:
  AliTOF(const AliTOF &source); // copy constructor
  AliTOF& operator=(const AliTOF &source); // ass. op.

  ClassDef(AliTOF,12)  // Time Of Flight base class
};
 
#endif /* ALITOF_H */
 AliTOF.h:1
 AliTOF.h:2
 AliTOF.h:3
 AliTOF.h:4
 AliTOF.h:5
 AliTOF.h:6
 AliTOF.h:7
 AliTOF.h:8
 AliTOF.h:9
 AliTOF.h:10
 AliTOF.h:11
 AliTOF.h:12
 AliTOF.h:13
 AliTOF.h:14
 AliTOF.h:15
 AliTOF.h:16
 AliTOF.h:17
 AliTOF.h:18
 AliTOF.h:19
 AliTOF.h:20
 AliTOF.h:21
 AliTOF.h:22
 AliTOF.h:23
 AliTOF.h:24
 AliTOF.h:25
 AliTOF.h:26
 AliTOF.h:27
 AliTOF.h:28
 AliTOF.h:29
 AliTOF.h:30
 AliTOF.h:31
 AliTOF.h:32
 AliTOF.h:33
 AliTOF.h:34
 AliTOF.h:35
 AliTOF.h:36
 AliTOF.h:37
 AliTOF.h:38
 AliTOF.h:39
 AliTOF.h:40
 AliTOF.h:41
 AliTOF.h:42
 AliTOF.h:43
 AliTOF.h:44
 AliTOF.h:45
 AliTOF.h:46
 AliTOF.h:47
 AliTOF.h:48
 AliTOF.h:49
 AliTOF.h:50
 AliTOF.h:51
 AliTOF.h:52
 AliTOF.h:53
 AliTOF.h:54
 AliTOF.h:55
 AliTOF.h:56
 AliTOF.h:57
 AliTOF.h:58
 AliTOF.h:59
 AliTOF.h:60
 AliTOF.h:61
 AliTOF.h:62
 AliTOF.h:63
 AliTOF.h:64
 AliTOF.h:65
 AliTOF.h:66
 AliTOF.h:67
 AliTOF.h:68
 AliTOF.h:69
 AliTOF.h:70
 AliTOF.h:71
 AliTOF.h:72
 AliTOF.h:73
 AliTOF.h:74
 AliTOF.h:75
 AliTOF.h:76
 AliTOF.h:77
 AliTOF.h:78
 AliTOF.h:79
 AliTOF.h:80
 AliTOF.h:81
 AliTOF.h:82
 AliTOF.h:83
 AliTOF.h:84
 AliTOF.h:85
 AliTOF.h:86
 AliTOF.h:87
 AliTOF.h:88
 AliTOF.h:89
 AliTOF.h:90
 AliTOF.h:91
 AliTOF.h:92
 AliTOF.h:93
 AliTOF.h:94
 AliTOF.h:95
 AliTOF.h:96
 AliTOF.h:97
 AliTOF.h:98
 AliTOF.h:99
 AliTOF.h:100
 AliTOF.h:101
 AliTOF.h:102
 AliTOF.h:103
 AliTOF.h:104
 AliTOF.h:105
 AliTOF.h:106
 AliTOF.h:107
 AliTOF.h:108
 AliTOF.h:109
 AliTOF.h:110
 AliTOF.h:111
 AliTOF.h:112
 AliTOF.h:113
 AliTOF.h:114
 AliTOF.h:115
 AliTOF.h:116
 AliTOF.h:117
 AliTOF.h:118