#include "Stntuple/obj/TStnJPTrack.hh" ClassImp(TStnJPTrack) TStnJPTrack::TStnJPTrack(Int_t I){ SetNumber(I); } //___________________________________________________________ TStnJPTrack::~TStnJPTrack(){ } //___________________________________________________________ void TStnJPTrack::ReadV1(TBuffer &R__b) { int nws = ((Short_t*) &fTrkQtyWordRPhi) - &fTrkInd; int nwf = ((Float_t*) &fCdfTrack) - &fZ0; TObject::Streamer(R__b); R__b.ReadFastArray( &fTrkInd, nws ); R__b.ReadFastArray( &fZ0, nwf ); fTrkQtyWordRPhi = fTrackQtyRZ; fTrkQtyWordRZ = fTrackQtyRPhi; for (int i = 0; i < 2; i++) { for (int j = 0; j < 8; j++) { fHitInfoInLayer[i][j] = fNumHitInLayer[i][j]; fExptHitInfoInLayer[i][j] = fNumShHitInLayer[i][j]; } } //printf("Warning you use jptrack version 1 , some variables will be incorrect \n"); } //___________________________________________________________ void TStnJPTrack::Streamer(TBuffer &R__b){ int nws = ((Short_t*) &fTrackQtyRPhi) - &fTrkInd; int nwi = ((Int_t* ) &fZ0 ) - &fTrkQtyWordRPhi; int nwf = ((Float_t*) &fCdfTrack ) - &fZ0; if (R__b.IsReading()) { Version_t R__v = R__b.ReadVersion(); if (R__v) { } if (R__v == 1) ReadV1(R__b); else { TObject::Streamer(R__b); R__b.ReadFastArray( &fTrkInd, nws ); R__b.ReadFastArray( &fTrkQtyWordRPhi, nwi ); R__b.ReadFastArray( &fZ0, nwf ); } } else { R__b.WriteVersion( TStnJPTrack::IsA() ); TObject::Streamer(R__b); R__b.WriteFastArray( &fTrkInd, nws ); R__b.WriteFastArray( &fTrkQtyWordRPhi, nwi ); R__b.WriteFastArray( &fZ0, nwf ); } } void TStnJPTrack::Print(Option_t* opt) const{ // print jetprob track information here } // // Accessing old variables // //----------------------------------------------------------- Int_t TStnJPTrack::TrackQtyRPhi() const //----------------------------------------------------------- { //printf("Warning you are using variables from JPTrack version 1 \n"); return (fTrackQtyRPhi); } //----------------------------------------------------------- Int_t TStnJPTrack::TrackQtyRZ() const //----------------------------------------------------------- { //printf("Warning you are using variables from JPTrack version 1 \n"); return (fTrackQtyRZ); } //----------------------------------------------------------- Int_t TStnJPTrack::NumHitInLayer(Int_t rphi, Int_t layer) const //----------------------------------------------------------- { //printf("Warning you are using variables from JPTrack version 1 \n"); return (fNumHitInLayer[rphi][layer]); } //----------------------------------------------------------- Int_t TStnJPTrack::NumShHitInLayer(Int_t rphi, Int_t layer) const //----------------------------------------------------------- { //printf("Warning you are using variables from JPTrack version 1 \n"); return (fNumShHitInLayer[rphi][layer]); } // // Accessing old variables // //----------------------------------------------------------- Int_t TStnJPTrack::TrkQualityRPhi() const //----------------------------------------------------------- { return (fTrkQtyWordRPhi & 0x00000001); } //----------------------------------------------------------- Int_t TStnJPTrack::LongLiveFlagRPhi() const //----------------------------------------------------------- { return (fTrkQtyWordRPhi & 0x00000002); } //----------------------------------------------------------- Int_t TStnJPTrack::TrkQualityRZ() const //----------------------------------------------------------- { return (fTrkQtyWordRZ & 0x00000001); } //----------------------------------------------------------- Int_t TStnJPTrack::LongLiveFlagRZ() const //----------------------------------------------------------- { return (fTrkQtyWordRZ & 0x00000002); } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumberHitInLayer(Int_t iType, Int_t iLayer) const //------------------------------------------------------------------------ { if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { return ((fHitInfoInLayer[iType][iLayer] & 0x0000000F)); } else { return (0); } } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumberShHitInLayer(Int_t iType, Int_t iLayer) const //------------------------------------------------------------------------ { if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { int nshr = 0; if (fHitInfoInLayer[iType][iLayer] & 0x00000010) {++nshr;} if (fHitInfoInLayer[iType][iLayer] & 0x00010000) {++nshr;} return (nshr); } else { return (0); } } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumGoodHitInLayer(Int_t iType, Int_t iLayer) const //------------------------------------------------------------------------ { Int_t ngoodhit = 0; int ishr = 0; int nstrip = 0; int ibad = 0; if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { if ((fHitInfoInLayer[iType][iLayer] & 0x0000000F) > 0) { ishr = (fHitInfoInLayer[iType][iLayer] & 0x00000010) >> 4; nstrip = (fHitInfoInLayer[iType][iLayer] & 0x00000F00) >> 8; ibad = (fHitInfoInLayer[iType][iLayer] & 0x0000F000) >> 12; if ((ishr == 0) && (nstrip <= 4) && (ibad == 0)) {++ngoodhit;} } if ((fHitInfoInLayer[iType][iLayer] & 0x0000000F) > 1) { ishr = (fHitInfoInLayer[iType][iLayer] & 0x000F0000) >> 16; nstrip = (fHitInfoInLayer[iType][iLayer] & 0x00F00000) >> 20; ibad = (fHitInfoInLayer[iType][iLayer] & 0x0F000000) >> 24; if ((ishr == 0) && (nstrip <= 4) && (ibad == 0)) {++ngoodhit;} } } return (ngoodhit); } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumExptHitInLayer(Int_t iType, Int_t iLayer) const //------------------------------------------------------------------------ { if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { return ((fExptHitInfoInLayer[iType][iLayer] & 0x0000000F)); } else { return (0); } } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumIntgHitInLayer(Int_t iType, Int_t iLayer) const //------------------------------------------------------------------------ { if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { return (((fExptHitInfoInLayer[iType][iLayer] & 0x000000F0) >> 4)); } else { return (0); } } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumRdErHitInLayer(Int_t iType, Int_t iLayer) const //------------------------------------------------------------------------ { if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { return (((fExptHitInfoInLayer[iType][iLayer] & 0x00000F00) >> 8)); } else { return (0); } } //------------------------------------------------------------------------ Int_t TStnJPTrack::TotNumSVXRPhiLayHit() const //------------------------------------------------------------------------ { // // Only look at hits in the R-Phi ladders of SVX (no L00 or ISL) // Int_t nhit=0; for (int i=1; i<6; ++i) { if ((fHitInfoInLayer[0][i] & 0x0000000F) > 0) { ++nhit; } } return (nhit); } //------------------------------------------------------------------------ Int_t TStnJPTrack::TotNumSVXRPhiLayShHit() const //------------------------------------------------------------------------ { // // Only look at shared hits in the R-Phi ladders of SVX (no L00 or ISL) // Int_t nshrhit=0; for (int i=1; i<6; ++i) { int nshr = 0; if (fHitInfoInLayer[0][i] & 0x00000010) {++nshr;} if (fHitInfoInLayer[0][i] & 0x00010000) {++nshr;} if (nshr > 0) {++nshrhit;} } return (nshrhit); } //------------------------------------------------------------------------ Int_t TStnJPTrack::TotNumGoodSVXRPhiLayHit() const //------------------------------------------------------------------------ { // // Only look at hits in the R-Phi ladders of SVX (no L00 or ISL) // int nhit=0; for (int i=1; i<6; ++i) { if (NumberHitInLayer(0,i) > 0) { if (NumGoodHitInLayer(0,i) == NumberHitInLayer(0,i)) { ++nhit; } } } return (nhit); } //------------------------------------------------------------------------ Int_t TStnJPTrack::NumStripInCluster(Int_t iType, Int_t iLayer, Int_t hitNum) const //------------------------------------------------------------------------ { Int_t nstrip = 0; if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { if ((fHitInfoInLayer[iType][iLayer] & 0x0000000F)>0) { if ((hitNum>=1) && (hitNum <= (fHitInfoInLayer[iType][iLayer] & 0x0000000F))) { if (hitNum == 1) { nstrip = (fHitInfoInLayer[iType][iLayer] & 0x00000F00) >> 8; } if (hitNum == 2) { nstrip = (fHitInfoInLayer[iType][iLayer] & 0x00F00000) >> 20; } } } } return(nstrip); } //------------------------------------------------------------------------ bool TStnJPTrack::AnyBadStripInCluster(Int_t iType, Int_t iLayer, Int_t hitNum) const //------------------------------------------------------------------------ { bool ibad = false; if (((iType >=0) && (iType <=1)) && ((iLayer >=0) && (iLayer <=7))) { if ((fHitInfoInLayer[iType][iLayer] & 0x0000000F)>0) { if ((hitNum>=1) && (hitNum <= (fHitInfoInLayer[iType][iLayer] & 0x0000000F))) { if (hitNum == 1) { if (((fHitInfoInLayer[iType][iLayer] & 0x0000F000) >> 12) > 0) {ibad = true;} } if (hitNum == 2) { if (((fHitInfoInLayer[iType][iLayer] & 0x0F000000) >> 24) > 0) {ibad = true;} } } } } return(ibad); } //------------------------------------------------------------------------ Int_t TStnJPTrack::TotNExptSVXRPhiLayHit() const //------------------------------------------------------------------------ { // // Only look at hits in the R-Phi ladders of SVX (no L00 or ISL) // Int_t ntotExpt = 0; for (int i=1; i<6; ++i) { if ((fExptHitInfoInLayer[0][i] & 0x0000000F) > 0) {++ntotExpt;} } return (ntotExpt); } //------------------------------------------------------------------------ Int_t TStnJPTrack::TotNIntgSVXRPhiLayHit() const //------------------------------------------------------------------------ { // // Only look at hits in the R-Phi ladders of SVX (no L00 or ISL) // Int_t ntotIntg = 0; Int_t nintg = 0; for (int i=1; i<6; ++i) { nintg = ((fExptHitInfoInLayer[0][i] & 0x000000F0) >> 4); if (nintg > 0) {++ntotIntg;} } return (ntotIntg); } //------------------------------------------------------------------------ Int_t TStnJPTrack::TotNRdErSVXRPhiLayHit() const //------------------------------------------------------------------------ { // // Only look at hits in the R-Phi ladders of SVX (no L00 or ISL) // Int_t ntotRdEr = 0; int nintg = 0; int nrder = 0; for (int i=1; i<6; ++i) { nintg = ((fExptHitInfoInLayer[0][i] & 0x000000F0) >> 4); nrder = ((fExptHitInfoInLayer[0][i] & 0x00000F00) >> 8); if ((nintg > 0) && (nrder > 0)) { if (nrder == nintg) {++ntotRdEr;} } } return (ntotRdEr); } //------------------------------------------------------------------------ void TStnJPTrack::SetTrackQtyRPhi(int TrackQty) //------------------------------------------------------------------------ { if (TrackQty == 0) { fTrkQtyWordRPhi = fTrkQtyWordRPhi & 0xFFFFFFFE; } if (TrackQty > 0) { fTrkQtyWordRPhi = fTrkQtyWordRPhi | 0x00000001; } } //------------------------------------------------------------------------ void TStnJPTrack::SetTrackQtyRZ(int TrackQty) //------------------------------------------------------------------------ { if (TrackQty == 0) { fTrkQtyWordRZ = fTrkQtyWordRZ & 0xFFFFFFFE; } if (TrackQty > 0) { fTrkQtyWordRZ = fTrkQtyWordRZ | 0x00000001; } } //------------------------------------------------------------------------ bool TStnJPTrack::IsTrackGoodRPhi() const //------------------------------------------------------------------------ { if ((TrkQualityRPhi() > 0) && (LongLiveFlagRPhi() == 0)) { return (true); } else { return (false); } } //------------------------------------------------------------------------ bool TStnJPTrack::IsTrackGoodRZ() const //------------------------------------------------------------------------ { if ((TrkQualityRZ() > 0) && (LongLiveFlagRZ() == 0)) { return (true); } else { return (false); } }