#ifndef STNTUPLE_TCesClusterMaker #define STNTUPLE_TCesClusterMaker #include "Stntuple/data/TCesCluster.hh" #include "TLorentzVector.h" #include "TClonesArray.h" class TCesDataBlock; class TCesClusterMaker { public: TCesClusterMaker():fCesBlock(NULL),fVariable(false),fSeed(1.0), fShoulder(0.6),fSeparationT(1.0),fSeparationF(0.5),fClusNStrips(11) { fClusters = new TClonesArray("TCesCluster",1000); } ~TCesClusterMaker() { delete fClusters; } void SetCesDataBlock(TCesDataBlock* block) { fCesBlock = block; } void SetUseVariableLength(bool t = false) { fVariable = t; } void SetSeedThreshold(float t = 1.0) { fSeed = t; } void SetShoulderThreshold(float t = 0.1) { fShoulder = t; } void SetSeparationThreshold(float t = 1.0) { fSeparationT = t; } void SetSeparationFraction(float t = 0.5) { fSeparationF = t; } void SetClusNStrips(int n = 11) { fClusNStrips = n; } void Clear() { fNClusters = 0;} Int_t ClusterWedge(Int_t wedge=-1, Int_t side=-1, Int_t view=-1); Int_t ClusterAll(); Int_t NClusters(Int_t wedge, Int_t side=-1, Int_t view=-1); Int_t NClusters() { return fNClusters;} TClonesArray* Clusters() {return fClusters;} TCesCluster* Cluster(int idx) { return (TCesCluster*)fClusters->UncheckedAt(idx); } Float_t Coord(Int_t side, Int_t view, Int_t wire); private: Int_t ClusterWedgeFixed(Int_t wedge=-1, Int_t side=-1, Int_t view=-1); Int_t ClusterWedgeVariable(Int_t wedge=-1, Int_t side=-1, Int_t view=-1); TCesDataBlock* fCesBlock; Float_t fSeed; Bool_t fVariable; Float_t fShoulder; Float_t fSeparationT; Float_t fSeparationF; Int_t fClusNStrips; Int_t fNClusters; TClonesArray* fClusters; }; #endif