]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICH.h
Corrected invertes arguments in pad size setter
[u/mrichter/AliRoot.git] / RICH / AliRICH.h
index 2724a5e38de5821e5b635707495d38fd23492844..4e131840098f367b75d6e99f4cbf6d89e0324a39 100644 (file)
@@ -1,5 +1,5 @@
-#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                               */
 ////////////////////////////////////////////////
 #include "AliDetector.h"
 #include "AliRICHConst.h"
-#include "AliRICHSegRes.h"
-#include "DataStructures.h"
 #include "AliRICHChamber.h"
-#include "AliRICHSegRes.h"
-#include <TVector.h>
-#include <TArrayF.h>
-#include <TObjArray.h>
-#include <TFile.h>
-#include <TTree.h>
-#include <TParticle.h>
-
-static const int NCH=7;
-
+static const int kNCH=7;
 
 
+class AliRICHHit;
 class AliRICHPadHit;
 class AliRICHRawCluster;
-class AliRICHRecHit;
+class AliRICHRecHit1D;
+class AliRICHRecHit3D;
 class AliRICHClusterFinder;
 class AliRICHDetect;
 class AliRICHChamber;
 class AliRICHCerenkov;
-class AliRICHSegmentation;
+class AliSegmentation;
 class AliRICHResponse;
 class AliRICHEllipse;
+class AliRICHGeometry;
 
 class AliRICH : public  AliDetector {
  public:
     AliRICH();
     AliRICH(const char *name, const char *title);
+    AliRICH(const AliRICH& RICH);
     virtual       ~AliRICH();
-    virtual void   AddHit(Int_t, Int_t*, Float_t*);
-    virtual void   AddCerenkov(Int_t, Int_t*, Float_t*);
-    virtual void   AddPadHit(Int_t*);
-    virtual void   AddDigits(Int_t, Int_t*, Int_t*, Int_t*);
-    virtual void   AddRawCluster(Int_t, const AliRICHRawCluster&);
-    virtual void   AddRecHit(Int_t, Float_t*);
+    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   AddPadHit(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);
 
 
     virtual void   BuildGeometry();
-    virtual void   CreateGeometry() {}
-    virtual void   CreateMaterials() {}
+    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;
@@ -65,8 +61,9 @@ class AliRICH : public  AliDetector {
     virtual void   ResetHits();
     virtual void   ResetDigits();
     virtual void   ResetRawClusters();
-    virtual void   ResetRecHits();
-    virtual void   FindClusters(Int_t,Int_t);
+    virtual void   ResetRecHits1D();
+    virtual void   ResetRecHits3D();
+    virtual void   FindClusters(Int_t nev,Int_t lastEntry);
     virtual void   Digitise(Int_t nev,Int_t flag,Option_t *opt=" ",Text_t *name=" ");
 // 
 // Configuration Methods (per station id)
@@ -75,28 +72,38 @@ class AliRICH : public  AliDetector {
 // 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, AliRICHSegmentation *segmentation);
+    virtual void   SetSegmentationModel(Int_t id, AliSegmentation *segmentation);
     virtual void   SetResponseModel(Int_t id, AliRICHResponse *response);
     virtual void   SetNsec(Int_t id, Int_t nsec);
 // Set Reconstruction Model
     virtual void   SetReconstructionModel(Int_t id, AliRICHClusterFinder *reconstruction);
+// Set source debugging level
+    void SetDebugLevel(Int_t level) {fDebugLevel=level;}
+// Get source debugging level
+    Int_t GetDebugLevel() {return fDebugLevel;}
 // Response Simulation
-    virtual Int_t   MakePadHits(Float_t xhit,Float_t yhit,Float_t eloss,Int_t id,Response_t res);
+    virtual Int_t   MakePadHits(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 AliRICHPadHit* FirstPad(AliRICHHit *, TClonesArray *);
-    virtual AliRICHPadHit* NextPad(TClonesArray *);
+    virtual AliRICHPadHit* FirstPad(AliRICHHit *hit, TClonesArray *clusters);
+    virtual AliRICHPadHit* 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            *RecHits() {return fRecHits;}
-    Int_t                *Nrechits() {return fNrechits;}
-    virtual TClonesArray *RecHitsAddress(Int_t id) {return ((TClonesArray *) (*fRecHits)[id]);}
+    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);
     
     
  protected:
@@ -106,14 +113,32 @@ class AliRICH : public  AliDetector {
     TClonesArray         *fPadHits;            // List of clusters
     TObjArray            *fDchambers;          // List of digits
     TClonesArray         *fCerenkovs;          // List of cerenkovs
-    Int_t                *fNdch;               // Number of digits
+    Int_t                 fNdch[kNCH];         // Number of digits
     Text_t               *fFileName;           // Filename for event mixing
     TObjArray            *fRawClusters;        // List of raw clusters
-    TObjArray            *fRecHits;            // List of rec. hits
-    Int_t                *fNrawch;             // Number of raw clusters
-    Int_t                *fNrechits;           // Number of rec hits 
-
- protected:
+    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
     
     ClassDef(AliRICH,1)  //Hits manager for set:RICH
 };