diff --git a/src/THcDC.cxx b/src/THcDC.cxx index a5c8036ade374d5aa7ac73cc6d11d29b212169ac..11eeca664b139eff5a558f3c436658df145e0b0d 100644 --- a/src/THcDC.cxx +++ b/src/THcDC.cxx @@ -83,11 +83,17 @@ THcDC::THcDC( fNChamHits = 0; fPlaneEvents = 0; + + //The version defaults to 0 (old HMS style). 1 is new HMS style and 2 is SHMS style. + fVersion = 0; } //_____________________________________________________________________________ void THcDC::Setup(const char* name, const char* description) { + + Bool_t optional = true; + // Create the chamber and plane objects using parameters. static const char* const here = "Setup"; @@ -116,6 +122,7 @@ void THcDC::Setup(const char* name, const char* description) {"dc_tdc_time_per_channel",&fNSperChan, kDouble}, {"dc_wire_velocity",&fWireVelocity,kDouble}, {"dc_plane_names",&planenamelist, kString}, + {"dc_version", &fVersion, kInt, 0, optional}, {0} }; diff --git a/src/THcDC.h b/src/THcDC.h index 744be7267f01c5985151af2a2560443b3852ef6b..097ca472d200092473e18d675ee79ec58fefd4dd 100644 --- a/src/THcDC.h +++ b/src/THcDC.h @@ -63,6 +63,7 @@ public: Int_t GetDriftTimeSign(Int_t plane) const { return fDriftTimeSign[plane-1];} Int_t GetReadoutLR(Int_t plane) const { return fReadoutLR[plane-1];} Int_t GetReadoutTB(Int_t plane) const { return fReadoutTB[plane-1];} + Int_t GetVersion() const {return fVersion;} Double_t GetPlaneTimeZero(Int_t plane) const { return fPlaneTimeZero[plane-1];} @@ -128,6 +129,7 @@ protected: Double_t fYtTrCriterion; Double_t fXptTrCriterion; Double_t fYptTrCriterion; + Int_t fVersion; // Each of these will be dimensioned with the number of chambers Double_t* fXCenter; diff --git a/src/THcDCHit.h b/src/THcDCHit.h index 8a2b0e14a5c7328d545492b0d1ccf764b7f14f40..8e880cdba7fc27c58c221852a01d3fd878d7d3a5 100644 --- a/src/THcDCHit.h +++ b/src/THcDCHit.h @@ -56,59 +56,107 @@ public: Int_t GetChamberNum() const { return fWirePlane->GetChamberNum(); } void SetCorrectedStatus(Int_t c) { fCorrected = c; } - //Set this correctly Int_t GetReadoutSide() { Int_t pln = fWirePlane->GetPlaneNum(); Int_t tb = fWirePlane->GetReadoutTB(); Int_t wn = fWire->GetNum(); - - //check if x board - if ((pln>=3 && pln<=4) || (pln>=9 && pln<=10)){ - if (tb>0){ - if (wn < 49){ - fReadoutSide = 4; + Int_t version = fWirePlane->GetVersion(); + + //if new HMS + if (version == 1){ + if ((pln>=3 && pln<=4) || (pln>=9 && pln<=10)){ + if (tb>0){ + if (wn < 60){ + fReadoutSide = 2; + } + else { + fReadoutSide = 4; + } } else { - fReadoutSide = 2; + if (wn < 44){ + fReadoutSide = 4; + } + else { + fReadoutSide = 2; + } } } - else { - if (wn < 33){ - fReadoutSide = 2; + else{ + if (tb>0){ + if (wn < 51){ + fReadoutSide = 2; + } + else if (wn >= 51 && wn <= 64){ + fReadoutSide = 1; + } + else { + fReadoutSide =4; + } } else { - fReadoutSide = 4; + if (wn < 33){ + fReadoutSide = 4; + } + else if (wn >=33 && wn<=46){ + fReadoutSide = 1; + } + else { + fReadoutSide = 2; + } } } } - //else is u board - else{ - if (tb>0){ - if (wn < 41){ - fReadoutSide = 4; - } - else if (wn >= 41 && wn <= 63){ - fReadoutSide = 3; - } - else if (wn >=64 && wn <=69){ - fReadoutSide = 1; - } - else { - fReadoutSide = 2; - } - } - else { - if (wn < 39){ - fReadoutSide = 2; + + else{//appplies SHMS DC configuration + //check if x board + if ((pln>=3 && pln<=4) || (pln>=9 && pln<=10)){ + if (tb>0){ + if (wn < 49){ + fReadoutSide = 4; + } + else { + fReadoutSide = 2; + } } - else if (wn >=39 && wn<=44){ - fReadoutSide = 1; + else { + if (wn < 33){ + fReadoutSide = 2; + } + else { + fReadoutSide = 4; + } } - else if (wn>=45 && wn<=67){ - fReadoutSide = 3; + } + //else is u board + else{ + if (tb>0){ + if (wn < 41){ + fReadoutSide = 4; + } + else if (wn >= 41 && wn <= 63){ + fReadoutSide = 3; + } + else if (wn >=64 && wn <=69){ + fReadoutSide = 1; + } + else { + fReadoutSide = 2; + } } else { - fReadoutSide = 4; + if (wn < 39){ + fReadoutSide = 2; + } + else if (wn >=39 && wn<=44){ + fReadoutSide = 1; + } + else if (wn>=45 && wn<=67){ + fReadoutSide = 3; + } + else { + fReadoutSide = 4; + } } } } diff --git a/src/THcDriftChamber.cxx b/src/THcDriftChamber.cxx index 0f27508ac2c1ef38c1eab1609f6c1dc69a6f571d..0062a5e66688a55695e5471e59c987990ec7a63c 100644 --- a/src/THcDriftChamber.cxx +++ b/src/THcDriftChamber.cxx @@ -144,6 +144,7 @@ Int_t THcDriftChamber::ReadDatabase( const TDatime& date ) {Form("dc_%d_zpos",fChamberNum), &fZPos, kDouble}, {0} }; + fRemove_Sppt_If_One_YPlane = 0; // Default fStubMaxXPDiff = 0.05; // The HMS default. Not used for SOS. gHcParms->LoadParmValues((DBRequest*)&list,prefix); @@ -912,12 +913,13 @@ void THcDriftChamber::CorrectHitTimes() x*plane->GetReadoutCorr()/fWireVelocity; // This applies the wire velocity correction for new SHMS chambers --hszumila, SEP17 - if (abs(plane->GetReadoutLR())==1){ + THcDC* fParent; + fParent = (THcDC*) GetParent(); + Int_t version = fParent->GetVersion(); + if (version!= 0){ Int_t pln = hit->GetPlaneNum(); Int_t readoutSide = hit->GetReadoutSide(); - THcDC* fParent; - fParent = (THcDC*) GetParent(); Double_t posn = hit->GetPos(); //The following values are determined from param file as permutations on planes 5 and 10 Int_t readhoriz = plane->GetReadoutLR(); diff --git a/src/THcDriftChamberPlane.cxx b/src/THcDriftChamberPlane.cxx index 863cecd2b76e5d557de42b6c2a781eef6dc66efd..75506a94a64860b4b18878e21ecdda47ffad1a5f 100644 --- a/src/THcDriftChamberPlane.cxx +++ b/src/THcDriftChamberPlane.cxx @@ -102,6 +102,9 @@ Int_t THcDriftChamberPlane::ReadDatabase( const TDatime& date ) {"_using_tzero_per_wire", &fUsingTzeroPerWire, kInt,0,1}, {0} }; + + + gHcParms->LoadParmValues((DBRequest*)&list,prefix); Double_t *DriftMap = new Double_t[NumDriftMapBins]; @@ -131,6 +134,7 @@ Int_t THcDriftChamberPlane::ReadDatabase( const TDatime& date ) fDriftTimeSign = fParent->GetDriftTimeSign(fPlaneNum); fReadoutLR = fParent->GetReadoutLR(fPlaneNum); fReadoutTB = fParent->GetReadoutTB(fPlaneNum); + fVersion = fParent->GetVersion(); fNSperChan = fParent->GetNSperChan(); diff --git a/src/THcDriftChamberPlane.h b/src/THcDriftChamberPlane.h index 35d3a68f41d908f2c1091f6c295f278443deee7e..85ef9accf27db6e16f01dc6bdd60aac955d977e7 100644 --- a/src/THcDriftChamberPlane.h +++ b/src/THcDriftChamberPlane.h @@ -71,6 +71,7 @@ public: Double_t CalcWireFromPos(Double_t pos); Int_t GetReadoutLR() const { return fReadoutLR;} Int_t GetReadoutTB() const { return fReadoutTB;} + Int_t GetVersion() const {return fVersion;} protected: @@ -79,6 +80,7 @@ protected: TClonesArray* fHits; TClonesArray* fWires; + Int_t fVersion; Int_t fWireOrder; Int_t fPlaneNum; Int_t fPlaneIndex; /* Index of this plane within it's chamber */