]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICH.h
Old style include needed on HP
[u/mrichter/AliRoot.git] / RICH / AliRICH.h
index 8753ad1e01ca8ca56f54ac9e14bd5dbf9c9489d6..bf5bcdc86240b2e9ccd229ea3d20f96fe4ced8b8 100644 (file)
-#ifndef RICH_H
-#define RICH_H
+#ifndef ALIRICH_H
+#define ALIRICH_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+
 ////////////////////////////////////////////////
 //  Manager and hits classes for set:RICH     //
 ////////////////////////////////////////////////
 #include "AliDetector.h"
-#include "AliHit.h"
-
-class AliRICH : public AliDetector {
-  
-protected:
-  Int_t               fNmips;            //Number of mips in RICH
-  Int_t               fNckovs;           //Number of cerenkovs in RICH
-  Int_t               fNpadhits;         //Number of pad hits in RICH
-  
-  TClonesArray        *fMips;              //List of mips
-  TClonesArray        *fCkovs;             //List of cerenkovs
-  TClonesArray        *fPadhits;           //List of Padhits
-  
-  Float_t             fChslope;            //Charge slope
-  Float_t             fAlphaFeed;          //Feed-back coefficient
-  Float_t             fSxcharge;           //Charge slope along x
-  Int_t               fIritri;             //Trigger flag
-
-public:
-  AliRICH();
-  AliRICH(const char *name, const char *title);
-  virtual              ~AliRICH();
-  virtual void         AddHit(Int_t, Int_t*, Float_t*);
-  virtual void         AddMipHit(Int_t, Int_t*, Float_t*);
-  virtual void         AddCkovHit(Int_t, Int_t*, Float_t*);
-  virtual void         AddPadHit(Int_t, Int_t*, Float_t*);
-  virtual void         BuildGeometry();
-  virtual void         CreateGeometry() {}
-  virtual void         CreateMaterials() {}
-  Int_t                DistancetoPrimitive(Int_t px, Int_t py);
-  inline virtual int   GetNmips() {return fNmips;}
-  inline virtual int   GetNckovs() {return fNckovs;}
-  inline virtual int   GetNpadhits() {return fNpadhits;}
-  virtual Int_t        IsVersion() const =0;
-  virtual void         Init();
-  inline TClonesArray  *Mips()    {return fMips;}
-  inline TClonesArray  *Ckovs()    {return fCkovs;}
-  inline TClonesArray  *Padhits()    {return fPadhits;}
-  void                 FinishEvent(void){;} 
-  virtual void         MakeBranch(Option_t *); 
-  void                 SetTreeAddress(void);
-  virtual void         StepManager();
-  virtual void         PreTrack();
-  
-  virtual void         SetSP(Float_t chslope){ fChslope=chslope;}
-  virtual void         SetFEED(Float_t alphafeed){fAlphaFeed=alphafeed;}
-  virtual void         SetSIGM(Float_t sxcharge){fSxcharge=sxcharge;}
-  virtual void         SetTRIG(Int_t iritri) {fIritri=iritri;}
-  virtual void         ResetHits();
-  virtual void         UpdateMipHit(Float_t*);
-  virtual void         RichIntegration();
-  virtual void         AnodicWires(Float_t &);
-  virtual void         GetChargeMip(Float_t &);
-  virtual void         GetCharge(Float_t &);
-  virtual void         FeedBack(Float_t *, Float_t );
-  virtual Float_t      FMathieson(Float_t , Float_t );
-  
-  ClassDef(AliRICH,1)  // Base class for RICH
-};
+#include "AliRICHConst.h"
+#include "AliRICHChamber.h"
+static const int kNCH=7;
 
-class AliRICHv1 : public AliRICH {
-  
-public:
-  AliRICHv1();
-  AliRICHv1(const char *name, const char *title);
-  virtual              ~AliRICHv1();
-  virtual void          CreateGeometry();
-  virtual void          CreateMaterials();
-  virtual Int_t         IsVersion() const {return 1;}
-  virtual void          DrawModule();
-  
-  
-  ClassDef(AliRICHv1,1)  // RICH version 1
-};
+class TFile;
 
-//_____________________________________________________________________________
-class AliRICHhit: public AliHit {
-public:
-  Int_t     fVolume[2];  //array of volumes
-  
-  //Pad informations
-  Int_t     fFirstpad;   //First index in padhits
-  Int_t     fLastpad;    //Last index in padhits
-  
-  //Hit information
-  Int_t     fModule;     //Module number
-  Float_t   fTheta;      //Theta of the particle generating the hit
-  
-  Float_t   fArrivaltime;// Time of hit.
-  Int_t     fPart;       //Particle type
-  
-  // we don't know what is this for :
-  Int_t     fFeed;       //Type of feedback (origin of charge deposition)
-  
-public:
-  AliRICHhit() {}
-  AliRICHhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits,
-            Int_t fNpadhits);
-  virtual ~AliRICHhit(){}
-  
-  void SetLastpad(Int_t lastpad){fLastpad=lastpad;}
-  
-  ClassDef(AliRICHhit,1)  // Hits for set RICH
-};
+class AliRICHHit;
+class AliRICHSDigit;
+class AliRICHRawCluster;
+class AliRICHRecHit1D;
+class AliRICHRecHit3D;
+class AliRICHClusterFinder;
+class AliRICHDetect;
+class AliRICHChamber;
+class AliRICHCerenkov;
+class AliSegmentation;
+class AliRICHResponse;
+class AliRICHEllipse;
+class AliRICHGeometry;
+class AliRICHMerger;
 
-//_____________________________________________________________________________
-class AliRICHmip: public AliRICHhit 
-{
-public:
-  // Hit information keep
-  Float_t   fPhi;        //Phi of the particle generating the hit
-  Float_t   fPs;         //Momentum of the particle generating the hit
-  Float_t   fQ;          //Charge of the particle
-  
-  // Generated cerenkov information (Z of generation stored in fZ of AliHit)
-  Int_t     fFirstCkov;  //Index in the ckov TcloneArray of the first generated 
-  Int_t     fLastCkov;   //Here the last.
-  
-public:
-  AliRICHmip() {}
-  AliRICHmip(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits,
-            Int_t fNckovs, Int_t fNpadhits);
-  virtual ~AliRICHmip() {}
-  
-  Float_t GetZ()                 { return fZ;}
-  void    SetX(Float_t x)        { fX        = x;     }
-  void    SetY(Float_t y)        { fY        = y;     }
-  void    SetZ(Float_t z)        { fZ        = z;     }
-  void    SetLastCkov(Int_t last){ fLastCkov = last;  }
-  void    SetModule(Int_t module){ fModule   = module;}
-  void    SetTheta(Float_t theta){ fTheta    = theta; }
-  void    SetPhi(Float_t phi)    { fPhi      = phi;   }
-  
-  ClassDef(AliRICHmip,1)  //Mip hits for RICH
-};
+class AliRICH : public  AliDetector {
+ public:
+    AliRICH();
+    AliRICH(const char *name, const char *title);
+    AliRICH(const AliRICH& RICH);
+    virtual       ~AliRICH();
+    virtual void   AddHit(Int_t track, Int_t *vol, Float_t *hits);
+    virtual void   AddCerenkov(Int_t track, Int_t *vol, Float_t *cerenkovs);
+    virtual void   AddSDigit(Int_t *clhits);
+    virtual void   AddDigits(Int_t id, Int_t *tracks, Int_t *charges, Int_t *digits);
+    virtual void   AddRawCluster(Int_t id, const AliRICHRawCluster& cluster);
+    virtual void   AddRecHit1D(Int_t id, Float_t* rechit, Float_t* photons, Int_t* padsx, Int_t* padsy);
+    virtual void   AddRecHit3D(Int_t id, Float_t* rechit);
 
-//_____________________________________________________________________________
-class AliRICHckov: public AliRICHhit 
-{
-public:
-  // Hit information keep
-  Float_t   fEnergy;     //Photon energy
-  Int_t     fStop;       //Stop mechanism (cut, threshold, ...)
-  
-  //Parent info
-  Int_t     fParent;     //Index in array of mips of parent which generatethis
-public:
-  AliRICHckov() {}
-  AliRICHckov(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits,
-             Int_t fNmips, Int_t fNpadhits);
-  virtual ~AliRICHckov() {}
-  
-  ClassDef(AliRICHckov,1) //Cerenkov hits for RICH
-};
 
-//_____________________________________________________________________________
-class AliRICHpadhit: public AliHit
-{
-public:
-  Int_t     fVolume[2];  //array of volumes
-  
-  // Hit information
-  Int_t     fX;          //Integer x position in pad
-  Int_t     fY;          //Integer y position in pad
-  Int_t     fModule;     //Module number
-  // Particle info
-  Int_t     fParentMip;  //Parent particle
-  Int_t     fParentCkov; //Parent CKOV
-  // physics info
-  Int_t     fProd;       //Production mechanism
-  Float_t   fCharge;     //Charge deposited
-
-public:
-  AliRICHpadhit(){}
-  AliRICHpadhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits,
-               Int_t fNmips,Int_t fNckovs);
-  virtual ~AliRICHpadhit() {}
-  
-  ClassDef(AliRICHpadhit,1) //Pad hits for RICH
-};  
+    virtual void   BuildGeometry();
+    virtual void   CreateGeometry();
+    virtual void   CreateMaterials();
+    virtual Float_t AbsoCH4(Float_t x);
+    virtual Float_t Fresnel(Float_t ene,Float_t pdoti, Bool_t pola);
+    virtual void   StepManager();
+    Int_t          DistancetoPrimitive(Int_t px, Int_t py);
+    virtual Int_t  IsVersion() const =0;
+//
+    TClonesArray  *SDigits() {return fSDigits;}
+    TClonesArray  *Cerenkovs() {return fCerenkovs;}
+    virtual void   MakeBranch(Option_t *opt=" ", const char *file=0);
+    void           SetTreeAddress();
+    virtual void   ResetHits();
+    virtual void   ResetDigits();
+    virtual void   ResetRawClusters();
+    virtual void   ResetRecHits1D();
+    virtual void   ResetRecHits3D();
+    virtual void   FindClusters(Int_t nev,Int_t lastEntry);
+    virtual void   Hits2SDigits();
+    virtual void   SDigits2Digits();
+    virtual void   SDigits2Digits(Int_t nev, Int_t flag);
+    virtual void   Digits2Reco();
+// 
+// Configuration Methods (per station id)
+//
+// Set Chamber Segmentation Parameters
+// id refers to the station and isec to the cathode plane   
+// Set Segmentation and Response Model
+    virtual void   SetGeometryModel(Int_t id, AliRICHGeometry *geometry);
+    virtual void   SetSegmentationModel(Int_t id, AliSegmentation *segmentation);
+    virtual void   SetResponseModel(Int_t id, AliRICHResponse *response);
+// Set Reconstruction Model
+    virtual void   SetReconstructionModel(Int_t id, AliRICHClusterFinder *reconstruction);
+// Set source debugging level
+    void           SetDebugLevel(Int_t level) {fDebugLevel=level;}
+// Set Merger
+    virtual void   SetMerger(AliRICHMerger* thisMerger) {fMerger=thisMerger;}  
+// Get source debugging level
+    Int_t          GetDebugLevel() {return fDebugLevel;}
+// Response Simulation
+    virtual Int_t  Hits2SDigits(Float_t xhit,Float_t yhit,Float_t eloss,Int_t id, ResponseType res);
+// Return reference to Chamber #id
+    virtual        AliRICHChamber& Chamber(Int_t id) {return *((AliRICHChamber *) (*fChambers)[id]);}
+// Retrieve pad hits for a given Hit
+    virtual        AliRICHSDigit* FirstPad(AliRICHHit *hit, TClonesArray *clusters);
+    virtual        AliRICHSDigit* NextPad(TClonesArray *clusters);
+// Return pointers to digits 
+    TObjArray     *Dchambers() {return fDchambers;}
+    Int_t         *Ndch() {return fNdch;}
+    virtual TClonesArray *DigitsAddress(Int_t id) {return ((TClonesArray *) (*fDchambers)[id]);}
+// Return pointers to rec. hits
+    TObjArray     *RecHits1D() {return fRecHits1D;}
+    Int_t         *Nrechits1D() {return fNrechits1D;}
+    virtual TClonesArray *RecHitsAddress1D(Int_t id) {return ((TClonesArray *) (*fRecHits1D)[id]);}
+    TObjArray     *RecHits3D() {return fRecHits3D;}
+    Int_t         *Nrechits3D() {return fNrechits3D;}
+    virtual TClonesArray *RecHitsAddress3D(Int_t id) {return ((TClonesArray *) (*fRecHits3D)[id]);}
+    
+// Return pointers to reconstructed clusters
+    virtual TClonesArray *RawClustAddress(Int_t id) {return ((TClonesArray *) (*fRawClusters)[id]);}    
+// Assignment operator
+    AliRICH& operator=(const AliRICH& rhs);
+
+// Analysis routines
+    // Full events
+    virtual void DiagnosticsFE(Int_t evNumber1=0,Int_t evNumber2=0);
+    // Single events
+    virtual void DiagnosticsSE(Int_t diaglevel,Int_t evNumber1=0,Int_t evNumber2=0);
+    
+ protected:
+    TObjArray            *fChambers;           // List of Tracking Chambers
+    Int_t                 fNSDigits;           // Number of clusters
+    Int_t                 fNcerenkovs;         // Number of cerenkovs
+    TClonesArray         *fSDigits;            // List of clusters
+    TObjArray            *fDchambers;          // List of digits
+    TClonesArray         *fCerenkovs;          // List of cerenkovs
+    Int_t                 fNdch[kNCH];         // Number of digits
+    TObjArray            *fRawClusters;        // List of raw clusters
+    TObjArray            *fRecHits1D;          // List of rec. hits
+    TObjArray            *fRecHits3D;          // List of rec. hits
+    Int_t                 fNrawch[kNCH];       // Number of raw clusters
+    Int_t                 fNrechits1D[kNCH];   // Number of rec hits 
+    Int_t                 fNrechits3D[kNCH];   // Number of rec hits 
+    Int_t                 fDebugLevel;         // Source debugging level
 
+    Int_t fCkovNumber;                         // Number of Cerenkov photons
+    Int_t fCkovQuarz;                          // Cerenkovs crossing quartz
+    Int_t fCkovGap;                            // Cerenkovs crossing gap
+    Int_t fCkovCsi;                            // Cerenkovs crossing csi
+    Int_t fLostRfreo;                          // Cerenkovs reflected in freon
+    Int_t fLostRquar;                          // Cerenkovs reflected in quartz
+    Int_t fLostAfreo;                          // Cerenkovs absorbed in freon 
+    Int_t fLostAquarz;                         // Cerenkovs absorbed in quartz
+    Int_t fLostAmeta;                          // Cerenkovs absorbed in methane
+    Int_t fLostCsi;                            // Cerenkovs below csi quantum efficiency 
+    Int_t fLostWires;                          // Cerenkovs lost in wires
+    Int_t fFreonProd;                          // Cerenkovs produced in freon
+    Float_t fMipx;                             // x coord. of MIP
+    Float_t fMipy;                             // y coord. of MIP
+    Int_t fFeedbacks;                          // Number of feedback photons
+    Int_t fLostFresnel;                        // Cerenkovs lost by Fresnel reflection
+
+
+// Background eent for event mixing
+    Text_t *fFileName;                         // ! File with background hits
+    AliRICHMerger *fMerger;                    // ! pointer to merger
+    
+    ClassDef(AliRICH,1)                        //Hits manager for set:RICH
+};
 #endif
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+