////////////////////////////////////////////////
// ITS Cluster Finder Class //
+// //
+// //
////////////////////////////////////////////////
-#include <Riostream.h>
#include <TObject.h>
#include <TClonesArray.h>
class AliITSresponse;
class AliITSsegmentation;
class AliITSRawCluster;
-class AliITS;
+class AliITSgeom;
class AliITSdigit;
class AliITSRecPoint;
+class AliITSDetTypeRec;
//----------------------------------------------------------------------
class AliITSClusterFinder :public TObject{
public:
AliITSClusterFinder(); // Default constructor
// Standard Constructor
- AliITSClusterFinder(AliITSsegmentation *seg, AliITSresponse *resp);
- AliITSClusterFinder(AliITSsegmentation *seg, AliITSresponse *resp,
- TClonesArray *digits);// Standard+ Constructor
+ AliITSClusterFinder(AliITSDetTypeRec* dettyp);
+ AliITSClusterFinder(AliITSDetTypeRec* dettyp,TClonesArray *digits);// Standard+ Constructor
virtual ~AliITSClusterFinder(); // Destructor
- AliITSClusterFinder(const AliITSClusterFinder &source); // copy constructor
- // assignment operator
- AliITSClusterFinder& operator=(const AliITSClusterFinder &source);
//
// 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;}
- //
- // Setters and Getters
- // segmentation
- virtual void SetSegmentation(AliITSsegmentation *segmentation) {
- fSegmentation=segmentation;}
- //Returns fSegmentation
- virtual AliITSsegmentation* GetSegmentation()const{return fSegmentation;}
// 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
- // Response
- //Return Response
- virtual AliITSresponse* GetResponse()const{return fResponse;}
- virtual void SetResponse(AliITSresponse *response) {// set response
- fResponse=response;}
// clulsters
// Set fClusters up
virtual void SetClusters(TClonesArray *itsClusters){// set clusters
virtual void FillCluster(AliITSRawCluster *,Int_t) {}// fiil cluster
virtual void FillCluster(AliITSRawCluster *cluster) {// fill cluster
FillCluster(cluster,1);}
- virtual void FindCluster(Int_t,Int_t,AliITSRawCluster *) {}// find cluster
- //
+
virtual void SetModule(Int_t module){fModule = module;}// Set module number
- virtual Int_t GetModule()const{return fModule;}// Returns module number
+ virtual Int_t GetModule()const {return fModule;}// Returns module number
//
// RecPoints
// Given a cluster of digits, creates the nessesary RecPoint. May also
//split by local maxima
virtual void SplitByLocalMaxima(AliITSRawCluster *){}
// IO functions
- void Print(ostream *os); // Class ascii print function
+ void Print(ostream *os) const; // Class ascii print function
void Read(istream *os); // Class ascii read function
+ virtual void Print(Option_t *option="") const {TObject::Print(option);}
+ virtual Int_t Read(const char *name) {return TObject::Read(name);}
- // data members
+ virtual void SetDetTypeRec(AliITSDetTypeRec* dtr) {fDetTypeRec=dtr;}
+ AliITSDetTypeRec* GetDetTypeRec() const {return fDetTypeRec;}
+
+ void InitGeometry();
+
protected:
- Int_t fDebug; //! Debug flag/level
- Int_t fModule; //! Module number to be reconstuctted
- TClonesArray *fDigits; //! digits
- Int_t fNdigits; //! num of digits
+ // methods
+ AliITSClusterFinder(const AliITSClusterFinder &source); // copy constructor
+ // assignment operator
+ AliITSClusterFinder& operator=(const AliITSClusterFinder &source);
+ // data members
- AliITSresponse *fResponse; //! response
- AliITSsegmentation *fSegmentation; //! segmentation
- 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
+ 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
+ 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
+
- ClassDef(AliITSClusterFinder,3) //Class for clustering and reconstruction of space points
+ ClassDef(AliITSClusterFinder,6) //Class for clustering and reconstruction of space points
};
// Input and output functions for standard C++ input/output.
ostream &operator<<(ostream &os,AliITSClusterFinder &source);