ROOT logo
#ifndef A_CORSIKA_IACT_FILE_H
#define A_CORSIKA_IACT_FILE_H

#include "bernlohr/fileopen.h"
#include "bernlohr/io_basic.h"
#include "bernlohr/mc_tel.h"

#include "TTree.h"

#include "ACorsikaIACTEventHeader.h"
#include "ACorsikaIACTRunHeader.h"
#include "ARayArray.h"

class ACorsikaIACTFile : public TObject {
 private:
  static const Int_t       kMaxArrays;
  static const Int_t       kMaxTelescopes;

  IO_ITEM_HEADER           fBlockHeader;
  TTree*                   fBunches;
  struct linked_string     fCorsikaInputs;
  ACorsikaIACTEventHeader* fEventHeader;
  TString                  fFileName;
  IO_BUFFER*               fIOBuffer;
  Int_t                    fMaxPhotonBunches;
  Int_t                    fNumberOfTelescopes;
  ACorsikaIACTRunHeader*   fRunHeader;
  Double_t*                fTelescopePosition[4]; //
  Double_t                 fMaxWavelength;
  Double_t                 fMinWavelength;

  Int_t    ReadNextBlock();

 public:
  ACorsikaIACTFile(Int_t bufferLenght = 20000000);
  virtual ~ACorsikaIACTFile();

  void     Close();
  TTree*   GetBunches() const { return fBunches;}
  const Char_t* GetFileName() const { return fFileName.Data();}
  Int_t    GetNumberOfTelescopes() const { return fNumberOfTelescopes;}
  ARayArray* GetRayArray(Int_t telNo, Int_t arrayNo, Double_t zoffset, Double_t refractiveIndex);
  Double_t GetTelescopeR(Int_t i) const;
  Double_t GetTelescopeX(Int_t i) const;
  Double_t GetTelescopeY(Int_t i) const;
  Double_t GetTelescopeZ(Int_t i) const;
  Bool_t   IsAllocated();
  Bool_t   IsOpen();
  void     Open(const Char_t* fname);
  void     PrintInputCard() const;
  Int_t    ReadEvent(Int_t num);
  void     SetMaxPhotonBunches(UInt_t max) { fMaxPhotonBunches = max;}

  ACorsikaIACTEventHeader* GetEventHeader() const { return fEventHeader;}
  ACorsikaIACTRunHeader*   GetRunHeader() const { return fRunHeader;}

  ClassDef(ACorsikaIACTFile, 1)
};

#endif // A_CORSIKA_IACT_FILE_H
 ACorsikaIACTFile.h:1
 ACorsikaIACTFile.h:2
 ACorsikaIACTFile.h:3
 ACorsikaIACTFile.h:4
 ACorsikaIACTFile.h:5
 ACorsikaIACTFile.h:6
 ACorsikaIACTFile.h:7
 ACorsikaIACTFile.h:8
 ACorsikaIACTFile.h:9
 ACorsikaIACTFile.h:10
 ACorsikaIACTFile.h:11
 ACorsikaIACTFile.h:12
 ACorsikaIACTFile.h:13
 ACorsikaIACTFile.h:14
 ACorsikaIACTFile.h:15
 ACorsikaIACTFile.h:16
 ACorsikaIACTFile.h:17
 ACorsikaIACTFile.h:18
 ACorsikaIACTFile.h:19
 ACorsikaIACTFile.h:20
 ACorsikaIACTFile.h:21
 ACorsikaIACTFile.h:22
 ACorsikaIACTFile.h:23
 ACorsikaIACTFile.h:24
 ACorsikaIACTFile.h:25
 ACorsikaIACTFile.h:26
 ACorsikaIACTFile.h:27
 ACorsikaIACTFile.h:28
 ACorsikaIACTFile.h:29
 ACorsikaIACTFile.h:30
 ACorsikaIACTFile.h:31
 ACorsikaIACTFile.h:32
 ACorsikaIACTFile.h:33
 ACorsikaIACTFile.h:34
 ACorsikaIACTFile.h:35
 ACorsikaIACTFile.h:36
 ACorsikaIACTFile.h:37
 ACorsikaIACTFile.h:38
 ACorsikaIACTFile.h:39
 ACorsikaIACTFile.h:40
 ACorsikaIACTFile.h:41
 ACorsikaIACTFile.h:42
 ACorsikaIACTFile.h:43
 ACorsikaIACTFile.h:44
 ACorsikaIACTFile.h:45
 ACorsikaIACTFile.h:46
 ACorsikaIACTFile.h:47
 ACorsikaIACTFile.h:48
 ACorsikaIACTFile.h:49
 ACorsikaIACTFile.h:50
 ACorsikaIACTFile.h:51
 ACorsikaIACTFile.h:52
 ACorsikaIACTFile.h:53
 ACorsikaIACTFile.h:54
 ACorsikaIACTFile.h:55
 ACorsikaIACTFile.h:56
 ACorsikaIACTFile.h:57
 ACorsikaIACTFile.h:58
 ACorsikaIACTFile.h:59
 ACorsikaIACTFile.h:60