#ifndef HMDCTRKCAND_H #define HMDCTRKCAND_H #include class HMdcTrkCand : public TObject { protected: Char_t sector; // sector number Short_t seg1Ind; // index of HMdcSeg container (inner segment) Short_t seg2Ind; // index of HMdcSeg container (outer segment) Short_t nCandForSeg1; // number of HMdcTrkCand objects // for this inner segmen // =0 - no outer segment // >0 this container is first // =-1 one of the next conteiners Short_t nextCandInd; // index of next HMdcTrkCand object // =-1 - this object is latest Short_t firstCandInd; // index of the first HMdcTrkCand object with // the same inner segment Float_t dedxInner; // mean value of t2-t1 for inner segment Float_t dedxSigmaInner; // sigma of t2-t1 distribution in inner segment UChar_t dedxNWireInner; // number of wires in inner segment before truncated mean procedure UChar_t dedxNWireCutInner; // number of wires in inner segment cutted by truncated mean procedure Float_t dedxOuter; // mean value of t2-t1 for outer segment Float_t dedxSigmaOuter; // sigma of t2-t1 distribution in outer segment UChar_t dedxNWireOuter; // number of wires in outer segment before truncated mean procedure UChar_t dedxNWireCutOuter; // number of wires in outer segment cutted by truncated mean procedure Short_t metaMatchInd; // first HMetaMatch obj.index created for this one Char_t flag; // user flag Float_t dedxCombined; // mean value of t2-t1 for inner+outer segment Float_t dedxSigmaCombined; // sigma of t2-t1 distribution in inner+outer segment UChar_t dedxNWireCombined; // number of wires in inner+outer segment before truncated mean procedure UChar_t dedxNWireCutCombined; // number of wires in inner+outer segment cutted by truncated mean procedure private: HMdcTrkCand* pFirstCand; //! first HMdcTrkCand object with //! the same inner segment public: HMdcTrkCand(void) {clear();} HMdcTrkCand(Char_t sec, Short_t s1ind, Int_t ind); HMdcTrkCand(HMdcTrkCand* fTrkCand, Short_t s2ind, Short_t ind); ~HMdcTrkCand(void) {} void clear(void); void setSec(const Char_t s) {sector=s;} void setSeg1Ind(const Short_t ind) {seg1Ind=ind;} void setSeg2Ind(const Short_t ind) {seg2Ind=ind;} void setNCandForSeg1(const Short_t n) {nCandForSeg1=n;} void setFirstCandInd(Short_t i) {firstCandInd=i;} void setNextCandInd(const Short_t n) {nextCandInd=n;} void setMetaMatchInd(const Short_t ind) {metaMatchInd=ind;} void addSeg2Ind(const Short_t ind) {seg2Ind=ind; nCandForSeg1=1;} void setFlag(const Char_t fl) { flag=fl;} void setdedxInnerSeg(Float_t dedx){dedxInner=dedx;} void setdedxOuterSeg(Float_t dedx){dedxOuter=dedx;} void setdedxCombinedSeg(Float_t dedx){dedxCombined=dedx;} void setdedxSeg(Int_t seg,Float_t dedx) { if(seg==0) {dedxInner=dedx;} else if(seg==1){dedxOuter=dedx;} else if(seg==2){dedxCombined=dedx;} } void setSigmadedxInnerSeg(Float_t sig){dedxSigmaInner=sig;} void setSigmadedxOuterSeg(Float_t sig){dedxSigmaOuter=sig;} void setSigmadedxCombinedSeg(Float_t sig){dedxSigmaCombined=sig;} void setSigmadedxSeg(Int_t seg,Float_t sig) { if(seg==0) {dedxSigmaInner=sig;} else if(seg==1){dedxSigmaOuter=sig;} else if(seg==2){dedxSigmaCombined=sig;} } void setNWirededxInnerSeg(UChar_t nw){dedxNWireInner=nw;} void setNWirededxOuterSeg(UChar_t nw){dedxNWireOuter=nw;} void setNWirededxCombinedSeg(UChar_t nw){dedxNWireCombined=nw;} void setNWirededxSeg(Int_t seg,UChar_t nw) { if(seg==0) {dedxNWireInner=nw;} else if(seg==1){dedxNWireOuter=nw;} else if(seg==2){dedxNWireCombined=nw;} } void setNWireCutdedxInnerSeg(UChar_t nw){dedxNWireCutInner=nw;} void setNWireCutdedxOuterSeg(UChar_t nw){dedxNWireCutOuter=nw;} void setNWireCutdedxCombinedSeg(UChar_t nw){dedxNWireCutCombined=nw;} void setNWireCutdedxSeg(Int_t seg,UChar_t nw) { if(seg==0) {dedxNWireCutInner=nw;} else if(seg==1){dedxNWireCutOuter=nw;} else if(seg==2){dedxNWireCutCombined=nw;} } Char_t getSec(void) const {return sector;} Short_t getSeg1Ind(void) const {return seg1Ind;} Short_t getSeg2Ind(void) const {return seg2Ind;} Short_t getSegInd(const Int_t seg) const { return (seg==0) ? seg1Ind : ((seg==1) ? seg2Ind:-1); } Short_t getNCandForSeg1(void) const {return nCandForSeg1;} Short_t getNextCandInd(void) const {return nextCandInd;} Short_t getFirstCandInd(void) const {return firstCandInd;} Short_t getMetaMatchInd(void) const {return metaMatchInd;} Char_t getFlag(void) const {return flag;} Float_t getdedxInnerSeg(){return dedxInner;} Float_t getdedxOuterSeg(){return dedxOuter;} Float_t getdedxCombinedSeg(){return dedxCombined;} Float_t getdedxSeg(Int_t seg) { if(seg==0) {return dedxInner;} else if(seg==1){return dedxOuter;} else if(seg==2){return dedxCombined;} else {return -1;} } Float_t getSigmadedxInnerSeg(){return dedxSigmaInner;} Float_t getSigmadedxOuterSeg(){return dedxSigmaOuter;} Float_t getSigmadedxCombinedSeg(){return dedxSigmaCombined;} Float_t getSigmadedxSeg(Int_t seg) { if(seg==0) {return dedxSigmaInner;} else if(seg==1){return dedxSigmaOuter;} else if(seg==2){return dedxSigmaCombined;} else {return -1;} } UChar_t getNWirededxInnerSeg(){return dedxNWireInner;} UChar_t getNWirededxOuterSeg(){return dedxNWireOuter;} UChar_t getNWirededxCombinedSeg(){return dedxNWireCombined;} UChar_t getNWirededxSeg(Int_t seg) { if(seg==0) {return dedxNWireInner;} else if(seg==1){return dedxNWireOuter;} else if(seg==2){return dedxNWireCombined;} else {return 0;} } UChar_t getNWireCutdedxInnerSeg(){return dedxNWireCutInner;} UChar_t getNWireCutdedxOuterSeg(){return dedxNWireCutOuter;} UChar_t getNWireCutdedxCombinedSeg(){return dedxNWireCutCombined;} UChar_t getNWireCutdedxSeg(Int_t seg) { if(seg==0) {return dedxNWireCutInner;} else if(seg==1){return dedxNWireCutOuter;} else if(seg==2){return dedxNWireCutCombined;} else {return 0;} } virtual void print(void) const; ClassDef(HMdcTrkCand,4) // MDC track candidate }; #endif /* HMDCTRKCAND_H */