#include <TObject.h>
#include <TClonesArray.h>
+#include "AliLog.h"
class AliITSMap;
class AliITSresponse;
class AliITSsegmentation;
-class AliITSRawCluster;
class AliITSdigit;
class AliITSRecPoint;
class AliITSDetTypeRec;
virtual ~AliITSClusterFinder(); // Destructor
//
// Do the Reconstruction.
- virtual void FindRawClusters(Int_t mod=0); // Finds cluster of digits.
- //
- // Sets the debug flag for debugging output
- void SetDebug(Int_t level=1){fDebug=level;}
- // Clears the debug flag so no debugging output will be generated
- void SetNoDebug(){fDebug=0;}
- // Returns the debug flag value
- Bool_t GetDebug(Int_t level=1)const {return fDebug>=level;}
+ virtual void FindRawClusters(Int_t /*mod*/)=0; // Finds cluster of digits.
+ virtual void RawdataToClusters(AliRawReader* /*rawReader*/) {
+ AliError("Method not implemented in this class ");
+ }
+
// Digit
virtual void SetDigits(TClonesArray *itsDigits) {// set digits
fDigits=itsDigits;fNdigits = fDigits->GetEntriesFast();}
return (AliITSdigit*) fDigits->UncheckedAt(i);}
virtual TClonesArray* Digits(){return fDigits;}// Gets fDigits
virtual Int_t NDigits() const {return fNdigits;}// Get Number of Digits
- // clulsters
+
// Set fClusters up
virtual void SetClusters(TClonesArray *itsClusters){// set clusters
- fClusters = itsClusters;fNRawClusters = fClusters->GetEntriesFast();}
+ fClusters = itsClusters;}
// Get fCluters
virtual TClonesArray* Clusters(){return fClusters;}
- // Get fCluter
- virtual AliITSRawCluster* Cluster(Int_t i){
- return (AliITSRawCluster*)(fClusters->At(i));}
// Returns the present number of enteries
virtual Int_t NClusters()const {return fClusters->GetEntriesFast();}
- // returns fNRawClusters
- virtual Int_t GetNRawClusters() const {return fNRawClusters;}
- // Determins if digit i has a neighbor and if so that neighor index is j.
- virtual void AddCluster(Int_t branch,AliITSRawCluster *c);
- virtual void AddCluster(Int_t branch,AliITSRawCluster *c,
- AliITSRecPoint &rp);
- virtual void FillCluster(AliITSRawCluster *,Int_t) {}// fiil cluster
- virtual void FillCluster(AliITSRawCluster *cluster) {// fill cluster
- FillCluster(cluster,1);}
virtual void SetModule(Int_t module){fModule = module;}// Set module number
virtual Int_t GetModule()const {return fModule;}// Returns module number
- void SetEvent(Int_t event) { fEvent=event; }
- virtual void RawdataToClusters(AliRawReader* /*rawReader*/,TClonesArray** /*clusters*/) {
- Warning("RawdataToClusters","Method not implemented in this class ");}
+ void SetEvent(Int_t event) { fEvent=event; }
- //
- // RecPoints
- // Given a cluster of digits, creates the nessesary RecPoint. May also
- // do some peak separation.
- virtual void CreateRecPoints(TObjArray *,Int_t){};
// Others
virtual void SetMap(AliITSMap *m) {fMap=m;}// map
AliITSMap* Map(){return fMap;}// map
- virtual Int_t GetNperMax() const {return fNperMax;}// returns fNperMax
- // returns fDeclusterFlag
- virtual Int_t GetDeclusterFlag()const{return fDeclusterFlag;}
- // returns fClusterSize
- virtual Int_t GetClusterSize() const {return fClusterSize;}
virtual Int_t GetNPeaks() const {return fNPeaks;}// returns fNPeaks
//
virtual Bool_t IsNeighbor(TObjArray *digs,Int_t i,Int_t j[]) const;
- virtual void Decluster(AliITSRawCluster *) {}// Decluster
- // Set max. Number of cells per local cluster
- virtual void SetNperMax(Int_t npermax=3) {fNperMax = npermax;}
- //Decluster
- virtual void SetDeclusterFlag(Int_t flag=1){fDeclusterFlag=flag;}
// Set max. cluster size ; bigger clusters will be rejected
- virtual void SetClusterSize(Int_t clsize=3) {fClusterSize = clsize;}
- virtual void CalibrateCOG() {}// Self Calibration of COG
- virtual void CorrectCOG(){}// correct COG
- virtual Bool_t Centered(AliITSRawCluster *) const {return kTRUE;}// cluster
- //split by local maxima
- virtual void SplitByLocalMaxima(AliITSRawCluster *){}
+
// IO functions
void Print(ostream *os) const; // Class ascii print function
void Read(istream *os); // Class ascii read function
static void CheckLabels2(Int_t lab[10]);
static void AddLabel(Int_t lab[10], Int_t label);
- // data members
- Int_t fDebug; //! Debug flag/level
- Int_t fModule; //! Module number to be reconstuctted
- TClonesArray *fDigits; //! digits
- Int_t fNdigits; //! num of digits
-
- AliITSDetTypeRec* fDetTypeRec; //ITS object for reconstruction
- TClonesArray *fClusters; //! Array of clusters
- Int_t fNRawClusters; //! in case we split the cluster
- // and want to keep track of
- // the cluster which was splitted
- AliITSMap *fMap; //! map
- Int_t fNperMax; //! NperMax
- Int_t fDeclusterFlag; //! DeclusterFlag
- Int_t fClusterSize; //! ClusterSize
- Int_t fNPeaks; //! NPeaks
- // Data members needed to fill AliCluster objects
- Int_t fNdet[2200]; // detector index
- Int_t fNlayer[2200]; // detector layer
-
- Int_t fNModules; // total number of modules
- Int_t fEvent; //event number
-
- AliITSClusterFinder(const AliITSClusterFinder &source); // copy constructor
- // assignment operator
- AliITSClusterFinder& operator=(const AliITSClusterFinder &source);
-
-
- ClassDef(AliITSClusterFinder,8) //Class for clustering and reconstruction of space points
+ // data members
+
+ Int_t fModule; //! Module number to be reconstuctted
+ TClonesArray *fDigits; //! digits
+ Int_t fNdigits; //! num of digits
+
+ AliITSDetTypeRec* fDetTypeRec; //ITS object for reconstruction
+ TClonesArray *fClusters; //! Array of clusters
+ AliITSMap *fMap; //! map
+ Int_t fNPeaks; //! NPeaks
+ // Data members needed to fill AliCluster objects
+ Int_t fNdet[2200]; // detector index
+ Int_t fNlayer[2200]; // detector layer
+
+ Int_t fNModules; // total number of modules
+ Int_t fEvent; //event number
+ Int_t fZmin; // minimum channel in Zloc
+ Int_t fZmax; // maximum channel in Zloc
+ Int_t fXmin; // minimum channel in Xloc
+ Int_t fXmax; // maximum channel in Xloc
+
+ AliITSClusterFinder(const AliITSClusterFinder &source); // copy constructor
+ // assignment operator
+ AliITSClusterFinder& operator=(const AliITSClusterFinder &source);
+
+
+ ClassDef(AliITSClusterFinder,10) //Class for clustering and reconstruction of space points
};
// Input and output functions for standard C++ input/output.
ostream &operator<<(ostream &os,AliITSClusterFinder &source);