]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICH.h
actor changed to create the task PHOS
[u/mrichter/AliRoot.git] / RICH / AliRICH.h
index 5331e67e582f84f6a3f155677e98c6607cb2142a..bf5bcdc86240b2e9ccd229ea3d20f96fe4ced8b8 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 kNCH=7;
 
-static const int NCH=7;
+class TFile;
 
-
-
-class AliRICHPadHit;
+class AliRICHHit;
+class AliRICHSDigit;
 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 AliRICHMerger;
 
 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   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);
 
 
     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;
 //
-    TClonesArray  *PadHits() {return fPadHits;}
+    TClonesArray  *SDigits() {return fSDigits;}
     TClonesArray  *Cerenkovs() {return fCerenkovs;}
-    virtual void   MakeBranch(Option_t *opt=" ");
+    virtual void   MakeBranch(Option_t *opt=" ", const char *file=0);
     void           SetTreeAddress();
     virtual void   ResetHits();
     virtual void   ResetDigits();
     virtual void   ResetRawClusters();
-    virtual void   ResetRecHits();
-    virtual void   FindClusters(Int_t,Int_t);
-    virtual void   Digitise(Int_t,Option_t *opt=" ",Text_t *name=" ");
+    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)
 //
@@ -75,47 +77,85 @@ 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;}
+// Set Merger
+    virtual void   SetMerger(AliRICHMerger* thisMerger) {fMerger=thisMerger;}  
+// 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  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]);}
+    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        AliRICHSDigit* FirstPad(AliRICHHit *hit, TClonesArray *clusters);
+    virtual        AliRICHSDigit* NextPad(TClonesArray *clusters);
 // Return pointers to digits 
-    TObjArray            *Dchambers() {return fDchambers;}
-    Int_t                *Ndch() {return fNdch;}
+    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);
+
+// 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                 fNPadHits;           // Number of clusters
+    Int_t                 fNSDigits;           // Number of clusters
     Int_t                 fNcerenkovs;         // Number of cerenkovs
-    TClonesArray         *fPadHits;            // List of clusters
+    TClonesArray         *fSDigits;            // List of clusters
     TObjArray            *fDchambers;          // List of digits
     TClonesArray         *fCerenkovs;          // List of cerenkovs
-    Int_t                *fNdch;               // Number of digits
-    Text_t               *fFileName;           // Filename for event mixing
+    Int_t                 fNdch[kNCH];         // Number of digits
     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
+
+
+// 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
+    ClassDef(AliRICH,1)                        //Hits manager for set:RICH
 };
 #endif