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

/* $Id: AliTOFT0maker.h,v 1.8 2010/01/19 16:32:20 noferini Exp $ */

///////////////////////////////////////////////
//					     //
//  Manager class for time zero evaluation   //
//  with TOF informations                    //
//					     //
///////////////////////////////////////////////


#include "TObject.h"

class TH1F;
class AliESDEvent;

class AliESDpid;
class AliTOFT0v1;
class AliTOFcalib;

class AliTOFT0maker : public TObject {
public:
  
  AliTOFT0maker() ; // default constructor
  AliTOFT0maker(AliESDpid *externalPID, AliTOFcalib *tofCalib=NULL); // overloaded constructor
  virtual ~AliTOFT0maker() ; // dtor
  
  // return (fCalculated[0]=event time -- fCalculated[1]=sigma event time in ps -- fCalculated[2]=mean event time for each fill -- fCalculated[3]=number of tracks at the TOF level) if you can subtruct the event time; return NULL if there is no event time
  Double_t *ComputeT0TOF(AliESDEvent *esd,Double_t t0time=0.,Double_t t0sigma=1000.); // t0time and t0sigma in ps
  void ApplyT0TOF(AliESDEvent *esd);
  Float_t GetExpectedSigma(Float_t mom, Float_t tof, Float_t mass);
  Double_t  *GetT0p(Float_t p);
  
  void      SetTimeResolution(Double_t timeresolution){fTimeResolution=timeresolution;};// TOF timeresolution in [ps]
  Double_t  GetTimeResolution() const {return fTimeResolution;} // Get TOF Time Resolution
  void SetT0FillWidth(Float_t width){if(width > 50) fT0width = width; else fT0width=150;}; // in ps
  
  void LoadChannelMap(const char *filename="$ALICE_ROOT/TOF/enableMap.104892.root"); //load the enable channel map
  void ApplyMask(AliESDEvent * const esd); // Apply the channel mask
  
  void SetNoTOFT0(Bool_t status=kTRUE){fNoTOFT0=status;}; // disable the TOF T0 info
  void SetMaskOffChannel(Bool_t status=kTRUE){fKmask=status;}; // switch for the map off channel
  
  Float_t  TuneForMC(AliESDEvent *esd); // set enabled channeld, add a smeared t0, add a TOF smearing, return true(smeared) T0 event
  
  void SetT0spread(Float_t t0spread){fT0spreadExt=t0spread;}; // get T0spread
  Float_t GetT0spread() const {return fT0spreadExt;} // get T0spread

  void SetT0fill(Float_t t0fill){fT0fillExt=t0fill;};
  
  void WriteInESD(AliESDEvent *esd);

  void SetTOFT0algorithm(Int_t flag=1){fTOFT0algorithm=flag;};
  Int_t GetTOFT0algorithm() const {return fTOFT0algorithm;};

 private:
  
  AliTOFT0maker(const AliTOFT0maker &);
  AliTOFT0maker & operator=(const AliTOFT0maker &);
  
  void SetTOFResponse();

  AliTOFT0v1 *fT0TOF; // T0-TOF
  AliESDpid *fPIDesd; // PID esd
  Bool_t fExternalPIDFlag; // external PID flag
  AliTOFcalib *fTOFcalib; // TOF calibration

  Bool_t fNoTOFT0;   // switch to avoid T0-TOF is used

  Int_t fNmomBins;

  Double_t fCalculated[10]; // contains the parameters with the event time

  Double_t fT0cur[2]; // current T0 and T0 sigma
 
  Double_t fTimeResolution;  // global time resolution used to calculate T0
  
  Float_t fT0sigma; // T0 resolution
  
  TH1F *fHmapChannel; // histo with the channel map
  Bool_t fKmask; // switch if you want apply a channel filter
  
  Float_t fT0width; // T0 FILL width

  Float_t fT0spreadExt;
  Float_t fT0fillExt; // t0spread if set 
  Int_t  fTOFT0algorithm; // select algorithm (1 default, 2 speed up)

  ClassDef(AliTOFT0maker,3);  // Calculate the time zero using TOF detector */
  
};

#endif // ALITOFT0MAKER_H
 AliTOFT0maker.h:1
 AliTOFT0maker.h:2
 AliTOFT0maker.h:3
 AliTOFT0maker.h:4
 AliTOFT0maker.h:5
 AliTOFT0maker.h:6
 AliTOFT0maker.h:7
 AliTOFT0maker.h:8
 AliTOFT0maker.h:9
 AliTOFT0maker.h:10
 AliTOFT0maker.h:11
 AliTOFT0maker.h:12
 AliTOFT0maker.h:13
 AliTOFT0maker.h:14
 AliTOFT0maker.h:15
 AliTOFT0maker.h:16
 AliTOFT0maker.h:17
 AliTOFT0maker.h:18
 AliTOFT0maker.h:19
 AliTOFT0maker.h:20
 AliTOFT0maker.h:21
 AliTOFT0maker.h:22
 AliTOFT0maker.h:23
 AliTOFT0maker.h:24
 AliTOFT0maker.h:25
 AliTOFT0maker.h:26
 AliTOFT0maker.h:27
 AliTOFT0maker.h:28
 AliTOFT0maker.h:29
 AliTOFT0maker.h:30
 AliTOFT0maker.h:31
 AliTOFT0maker.h:32
 AliTOFT0maker.h:33
 AliTOFT0maker.h:34
 AliTOFT0maker.h:35
 AliTOFT0maker.h:36
 AliTOFT0maker.h:37
 AliTOFT0maker.h:38
 AliTOFT0maker.h:39
 AliTOFT0maker.h:40
 AliTOFT0maker.h:41
 AliTOFT0maker.h:42
 AliTOFT0maker.h:43
 AliTOFT0maker.h:44
 AliTOFT0maker.h:45
 AliTOFT0maker.h:46
 AliTOFT0maker.h:47
 AliTOFT0maker.h:48
 AliTOFT0maker.h:49
 AliTOFT0maker.h:50
 AliTOFT0maker.h:51
 AliTOFT0maker.h:52
 AliTOFT0maker.h:53
 AliTOFT0maker.h:54
 AliTOFT0maker.h:55
 AliTOFT0maker.h:56
 AliTOFT0maker.h:57
 AliTOFT0maker.h:58
 AliTOFT0maker.h:59
 AliTOFT0maker.h:60
 AliTOFT0maker.h:61
 AliTOFT0maker.h:62
 AliTOFT0maker.h:63
 AliTOFT0maker.h:64
 AliTOFT0maker.h:65
 AliTOFT0maker.h:66
 AliTOFT0maker.h:67
 AliTOFT0maker.h:68
 AliTOFT0maker.h:69
 AliTOFT0maker.h:70
 AliTOFT0maker.h:71
 AliTOFT0maker.h:72
 AliTOFT0maker.h:73
 AliTOFT0maker.h:74
 AliTOFT0maker.h:75
 AliTOFT0maker.h:76
 AliTOFT0maker.h:77
 AliTOFT0maker.h:78
 AliTOFT0maker.h:79
 AliTOFT0maker.h:80
 AliTOFT0maker.h:81
 AliTOFT0maker.h:82
 AliTOFT0maker.h:83
 AliTOFT0maker.h:84
 AliTOFT0maker.h:85
 AliTOFT0maker.h:86
 AliTOFT0maker.h:87
 AliTOFT0maker.h:88
 AliTOFT0maker.h:89
 AliTOFT0maker.h:90
 AliTOFT0maker.h:91
 AliTOFT0maker.h:92
 AliTOFT0maker.h:93
 AliTOFT0maker.h:94
 AliTOFT0maker.h:95
 AliTOFT0maker.h:96
 AliTOFT0maker.h:97