]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSclustererV2.h
store also difference in local Y
[u/mrichter/AliRoot.git] / ITS / AliITSclustererV2.h
index 9800ccf32b806d1ef240155e5258b7aa4abdd86c..3c0bf27f105b261facf1329c8b1c8708aa3437af 100644 (file)
@@ -9,35 +9,34 @@
 //
 //   Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
 //--------------------------------------------------------------
-#include <Rtypes.h>
+#include <TObject.h>
 
 class TFile;
+class TTree;
 class TClonesArray;
 
-class AliITSgeom;
 class AliITSclusterV2;
+class AliRawReader;
+class AliITSRawStream;
 
-class AliITSclustererV2 {
+class AliITSclustererV2 : public TObject {
 public:
-  AliITSclustererV2(){ fEvent=0; fI=0; }
-  AliITSclustererV2(const AliITSgeom *geom);
+  AliITSclustererV2();
+  AliITSclustererV2(const Char_t *geom);
 
   void SetEvent(Int_t event) { fEvent=event; }
-  void Digits2Clusters(const TFile *in, TFile *out);
+  Int_t Digits2Clusters(TTree *in, TTree *out);
+  void Digits2Clusters(AliRawReader* rawReader);
   void FindClustersSPD(const TClonesArray *dig, TClonesArray *cls);
+  void FindClustersSPD(AliITSRawStream* input, TClonesArray** clusters);
   void FindClustersSDD(const TClonesArray *dig, TClonesArray *cls);
+  void FindClustersSDD(AliITSRawStream* input, TClonesArray** clusters);
   void FindClustersSSD(const TClonesArray *dig, TClonesArray *cls);
+  void FindClustersSSD(AliITSRawStream* input, TClonesArray** clusters);
 
   void RecPoints2Clusters(const TClonesArray *p, Int_t idx, TClonesArray *c);
-  void Hits2Clusters(const TFile *in, TFile *out);
 
-private:
   class Ali1Dcluster {
-  private:
-    Float_t fY; //cluster position
-    Float_t fQ; //cluster charge
-    Int_t fNd;  //number of digits
-    Int_t fLab[3]; //track label
   public:
     void SetY(Float_t y) {fY=y;}
     void SetQ(Float_t q) {fQ=q;}
@@ -47,13 +46,19 @@ private:
     Float_t GetQ() const {return fQ;}
     Int_t GetNd()const {return fNd;}
     Int_t GetLabel(Int_t lab) const { return fLab[lab]; }
+  private:
+    Float_t fY; //cluster position
+    Float_t fQ; //cluster charge
+    Int_t fNd;  //number of digits
+    Int_t fLab[3]; //track label
   };
   class AliBin {
   public:
-    AliBin() {fIndex=0; fQ=0; fMask=0xFFFFFFFE;}
+    AliBin():fIndex(0),fMask(0xFFFFFFFE),fQ(0) {}
     void SetIndex(UInt_t idx) {fIndex=idx;}
     void SetQ(UShort_t q)  {fQ=q;}
     void SetMask(UInt_t m) {fMask=m;}
+    void Reset() {fIndex=0; fMask=0xFFFFFFFE; fQ=0;}
 
     void Use() {fMask&=0xFFFFFFFE;}
     Bool_t IsNotUsed() const {return (fMask&1);}
@@ -72,9 +77,18 @@ private:
   static void MarkPeak(Int_t k, Int_t max, AliBin *bins, UInt_t m);
   static void MakeCluster(Int_t k,Int_t max,AliBin *bins,UInt_t m,
    AliITSclusterV2 &c);
+  void FindClustersSDD(AliBin* bins[2], Int_t nMaxBin, Int_t nMaxZ,
+                      const TClonesArray *dig, TClonesArray *cls);
+  void FindClustersSSD(Ali1Dcluster* neg, Int_t nn, 
+                      Ali1Dcluster* pos, Int_t np,
+                      TClonesArray *clusters);
+
 
   static void FindCluster(Int_t k,Int_t maxz,AliBin *bins,Int_t &n,Int_t *idx);
 
+protected:
+  Int_t fNModules;             // total number of modules
+
 private:
   Int_t fEvent;           //event number
 
@@ -82,6 +96,7 @@ private:
   Float_t fYshift[2200];       //y-shifts of detector local coor. systems 
   Float_t fZshift[2200];       //z-shifts of detector local coor. systems 
   Int_t fNdet[2200];            //detector index  
+  Int_t fNlayer[2200];          //detector layer
 
   //SPD related values:
   Int_t fLastSPD1;       //index of the last SPD1 detector