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

/* $Id$ */

////////////////////////////////////////////////
//  Manager and classes for set ZDC           //
////////////////////////////////////////////////

#include <TSystem.h>

#include "AliDetector.h"
#include "AliZDCTrigger.h"
#include "AliZDCChMap.h"

class AliZDCPedestals;
class AliZDCEnCalib;
class AliZDCTowCalib;
 
class AliZDC : public AliDetector {

public:
  AliZDC();
  AliZDC(const char *name, const char *title);
  virtual       ~AliZDC();
  AliZDC(const AliZDC&);
  //
  virtual void  AddHit(Int_t track, Int_t *vol, Float_t *hits);
  virtual void  CreateGeometry() {}
  virtual void  CreateMaterials() {}
  virtual Int_t IsVersion() const =0;
  virtual Float_t ZMin() const;	// Minimum overall dimension of the ZDC
  virtual Float_t ZMax() const;	// Maximum overall dimension of the ZDC
  virtual void  SetTreeAddress();
  virtual void  MakeBranch(Option_t* opt);
  virtual void  Hits2SDigits();
  virtual AliDigitizer* CreateDigitizer(AliDigitizationInput* digInput) const;
  virtual void  Digits2Raw();
  virtual Bool_t Raw2SDigits(AliRawReader* rawReader);
  Int_t   Pedestal(Int_t Detector, Int_t Quadrant, Int_t Res) const;
  Int_t   ADCch2Phe(Int_t Detector, Int_t Quadrant, Int_t ADCVal, Int_t Res) const;
  virtual void  StepManager() {}
    
  // Switching off the shower development in ZDCs
  void  NoShower(){fNoShower=1;}
  void  Shower()  {fNoShower=0;}
  
  virtual void SetVCollSideCAperture(Float_t /*aperture*/) {}
  virtual void SetVCollSideCApertureNeg(Float_t /*aperture*/) {}
  virtual void SetVCollSideCCentre(Float_t /*centre*/) {}
  
  virtual void SetVCollSideAAperture(Float_t /*aperture*/) {}
  virtual void SetVCollSideAApertureNeg(Float_t /*aperture*/) {}
  virtual void SetVCollSideACentre(Float_t /*centre*/) {}
  
  virtual void SetTCDDAperturePos(Float_t /*aperture*/) {}
  virtual void SetTCDDApertureNeg(Float_t /*aperture*/) {}
  
  virtual void SetTDIAperturePos(Float_t /*aperture*/) {}
  virtual void SetTDIApertureNeg(Float_t /*aperture*/) {}
  
  virtual void SetLumiLength(Float_t /*length*/) {}
  
  virtual void SetYZNC(Float_t /*yZNC*/) {}
  virtual void SetYZNA(Float_t /*yZNA*/) {}
  virtual void SetYZPC(Float_t /*yZPC*/) {}
  virtual void SetYZPA(Float_t /*yZPA*/) {}

  //Calibration methods 
  void    SetZDCCalibFName(const char *name);
  char*   GetZDCCalibFName() const {return (char*)fZDCCalibFName.Data();}
  AliZDCPedestals* GetPedCalib()   const  {return fPedCalib;}
  AliZDCEnCalib*   GetECalibData() const  {return fEnCalibData;}
  
  // Map from OCDB
  AliZDCChMap*     GetChMap() const;

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

  
  void  SetSpectatorsTrack() {fSpectatorTracked=0;}
  Int_t SpectatorsTracked() const {return fSpectatorTracked;}
  void  SetBeamEnergy(Float_t beamEnergy) {fBeamEnergy = beamEnergy;}
  void  SetpAsystem() {fIspASystem = kTRUE;}
  void  SetRELDISGenerator() {fIsRELDISgen = kTRUE;}
  
  void  SetOnlyZEM() 		{fOnlyZEM=kTRUE;}
  void  SetMotherFinding()	{fFindMother=kTRUE;}

private:

  AliZDC& operator = (const AliZDC&);

protected:

  Int_t        fNoShower;		// Flag to switch off the shower	

  //Calibration data member 
  AliZDCPedestals* fPedCalib;		//! Pedestal data for ZDC
  AliZDCEnCalib*   fEnCalibData;	//! Energy data for ZDC
  AliZDCTowCalib*  fTowCalibData;	//! Equalization data for ZDC

  TString          fZDCCalibFName; 	// Name of the ZDC calibration data
 
  Int_t   fSpectatorTracked; // Are spectator tracked by generator? 0=NO
  Float_t fBeamEnergy;	     // beam energy from generator (AliGenZDC + RELDIS)
  Bool_t  fIspASystem;       // Configuring pA collisions (MC only)
  Bool_t  fIsRELDISgen;	     // Is RELDIS used as generator
  
  Bool_t fOnlyZEM;	     // build only ZEM (no had. calorimeters!)
  Bool_t fFindMother;	     // look for particle mothers in the stack in StepManager
  
  ClassDef(AliZDC,14)  	// Zero Degree Calorimeter base class
};
 
// Calibration
//_____________________________________________________________________________
inline void AliZDC::SetZDCCalibFName(const char *name)  
{ 
  fZDCCalibFName = name;        
  gSystem->ExpandPathName(fZDCCalibFName);
}


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