Skip to content
Snippets Groups Projects
Commit 101b856f authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Merge branch 'develop' into upderp

 Conflicts:
	src/THcCherenkov.cxx
parents 33dd4d07 0263dc72
No related branches found
No related tags found
No related merge requests found
Subproject commit 1b2c04ad6976a7157f5cba98a5ea26278bca19ed
Subproject commit 9001670be3944886c4936d2b2eac8a94935b4390
......@@ -220,6 +220,8 @@ Int_t THcCherenkov::ReadDatabase(const TDatime& date) {
// Region parameters
fRegionsValueMax = fNRegions * 8;
fRegionValue = new Double_t[fRegionsValueMax];
fAdcGoodElem = new Int_t[fNelem];
fAdcPulseAmpTest = new Double_t[fNelem];
DBRequest list[] = {{"_ped_limit", fPedLimit, kInt, (UInt_t)fNelem, optional},
{"_adc_to_npe", fGain, kDouble, (UInt_t)fNelem},
......@@ -468,29 +470,39 @@ Int_t THcCherenkov::ApplyCorrections(void) { return (0); }
//_____________________________________________________________________________
Int_t THcCherenkov::CoarseProcess(TClonesArray&) {
Double_t StartTime = 0.0;
if (fglHod)
StartTime = fglHod->GetStartTime();
// Loop over the elements in the TClonesArray
for (Int_t ielem = 0; ielem < frAdcPulseInt->GetEntries(); ielem++) {
Int_t npmt = ((THcSignalHit*)frAdcPulseInt->ConstructedAt(ielem))->GetPaddleNumber() - 1;
Double_t pulsePed = ((THcSignalHit*)frAdcPed->ConstructedAt(ielem))->GetData();
Double_t pulseInt = ((THcSignalHit*)frAdcPulseInt->ConstructedAt(ielem))->GetData();
Double_t pulseIntRaw = ((THcSignalHit*)frAdcPulseIntRaw->ConstructedAt(ielem))->GetData();
Double_t pulseAmp = ((THcSignalHit*)frAdcPulseAmp->ConstructedAt(ielem))->GetData();
Double_t pulseTime = ((THcSignalHit*)frAdcPulseTime->ConstructedAt(ielem))->GetData();
Double_t adctdcdiffTime = StartTime - pulseTime;
Bool_t errorFlag = ((THcSignalHit*)fAdcErrorFlag->ConstructedAt(ielem))->GetData();
Bool_t pulseTimeCut =
adctdcdiffTime > fAdcTimeWindowMin[npmt] && adctdcdiffTime < fAdcTimeWindowMax[npmt];
if (!errorFlag) {
fGoodAdcMult.at(npmt) += 1;
if( fglHod ) StartTime = fglHod->GetStartTime();
for(Int_t ipmt = 0; ipmt < fNelem; ipmt++) {
fAdcPulseAmpTest[ipmt] = -1000.;
fAdcGoodElem[ipmt]=-1;
}
//
for(Int_t ielem = 0; ielem < frAdcPulseInt->GetEntries(); ielem++) {
Int_t npmt = ((THcSignalHit*) frAdcPulseInt->ConstructedAt(ielem))->GetPaddleNumber() - 1;
Double_t pulseTime = ((THcSignalHit*) frAdcPulseTime->ConstructedAt(ielem))->GetData();
Double_t pulseAmp = ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(ielem))->GetData();
Double_t adctdcdiffTime = StartTime-pulseTime;
Bool_t errorFlag = ((THcSignalHit*) fAdcErrorFlag->ConstructedAt(ielem))->GetData();
Bool_t pulseTimeCut = adctdcdiffTime > fAdcTimeWindowMin[npmt] && adctdcdiffTime < fAdcTimeWindowMax[npmt];
if (!errorFlag)
{
fGoodAdcMult.at(npmt) += 1;
}
if (!errorFlag && pulseTimeCut && pulseAmp > fAdcPulseAmpTest[npmt]) {
fAdcGoodElem[npmt]=ielem;
fAdcPulseAmpTest[npmt] = pulseAmp;
}
}
// Loop over the npmt
for(Int_t npmt = 0; npmt < fNelem; npmt++) {
Int_t ielem = fAdcGoodElem[npmt];
if (ielem != -1) {
Double_t pulsePed = ((THcSignalHit*) frAdcPed->ConstructedAt(ielem))->GetData();
Double_t pulseInt = ((THcSignalHit*) frAdcPulseInt->ConstructedAt(ielem))->GetData();
Double_t pulseIntRaw = ((THcSignalHit*) frAdcPulseIntRaw->ConstructedAt(ielem))->GetData();
Double_t pulseAmp = ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(ielem))->GetData();
Double_t pulseTime = ((THcSignalHit*) frAdcPulseTime->ConstructedAt(ielem))->GetData();
Double_t adctdcdiffTime = StartTime-pulseTime;
// By default, the last hit within the timing cut will be considered "good"
if (!errorFlag && pulseTimeCut) {
fGoodAdcPed.at(npmt) = pulsePed;
fGoodAdcHitUsed.at(npmt) = ielem + 1;
fGoodAdcPulseInt.at(npmt) = pulseInt;
......
......@@ -115,6 +115,8 @@ public:
Double_t* fPedMean; /* Can be supplied in parameters and then */
Double_t* fPed;
Double_t* fThresh;
Double_t* fAdcPulseAmpTest;
Int_t* fAdcGoodElem;
// 12 Gev FADC variables
TClonesArray* frAdcPedRaw;
......
......@@ -180,6 +180,10 @@ Int_t THcCoinTime::DefineVariables( EMode mode )
{"CoinTime_RAW_ROC1", "ROC1 RAW Coincidence Time", "fROC1_RAW_CoinTime"},
{"CoinTime_RAW_ROC2", "ROC2 RAW Coincidence Time", "fROC2_RAW_CoinTime"},
{"DeltaSHMSPathLength","DeltaSHMSpathLength (cm)","DeltaSHMSpathLength"},
{"DeltaHMSPathLength", "DeltaHMSpathLength (cm)","DeltaHMSpathLength"},
{"had_coinCorr_Positron", "", "had_coinCorr_Positron"},
{"elec_coinCorr", "", "elec_coinCorr"},
{ 0 }
};
......@@ -216,6 +220,8 @@ Int_t THcCoinTime::Process( const THaEvData& evdata )
//Gather relevant variables for Coincidence time calculation
lightSpeed = 29.9792; // in cm/ns
elec_coinCorr=kBig;
had_coinCorr_Positron=kBig;
//Particle Masses (HardCoded)
elecMass = 0.510998/1000.0; // electron mass in GeV/c^2
positronMass = 0.510998/1000.0;
......@@ -240,6 +246,8 @@ Int_t THcCoinTime::Process( const THaEvData& evdata )
Double_t SHMS_FPtime = theSHMSTrack->GetFPTime();
//HMS arm
Double_t hms_xptar = theHMSTrack->GetTTheta();
Double_t hms_dP = theHMSTrack->GetDp();
Double_t hms_xfp = theHMSTrack->GetX();
Double_t hms_xpfp = theHMSTrack->GetTheta();
Double_t hms_ypfp = theHMSTrack->GetPhi();
......@@ -251,8 +259,10 @@ Int_t THcCoinTime::Process( const THaEvData& evdata )
pTRIG1_TdcTime_ROC2 = fCoinDet->Get_CT_Trigtime(2);//SHMS
pTRIG4_TdcTime_ROC2 = fCoinDet->Get_CT_Trigtime(3);//HMS
DeltaSHMSpathLength = -0.11*atan2(shms_xptar,1)*1000 - 0.057*shms_dP;
DeltaHMSpathLength = 12.462*hms_xpfp + 0.1138*hms_xpfp*hms_xfp - 0.0154*hms_xfp - 72.292*hms_xpfp*hms_xpfp - 0.0000544*hms_xfp*had_xfp - 116.52*hms_ypfp*hms_ypfp;
DeltaSHMSpathLength = .11*shms_xptar*1000 +0.057*shms_dP/100.;
DeltaHMSpathLength = -1.0*(12.462*hms_xpfp + 0.1138*hms_xpfp*hms_xfp - 0.0154*hms_xfp - 72.292*hms_xpfp*hms_xpfp - 0.0000544*hms_xfp*had_xfp - 116.52*hms_ypfp*hms_ypfp);
DeltaHMSpathLength = (.12*hms_xptar*1000 +0.17*hms_dP/100.);
// default assume SHMS is electron arm
Double_t ElecPathLength=SHMScentralPathLen + DeltaSHMSpathLength;
Double_t HadPathLength=HMScentralPathLen + DeltaHMSpathLength;
......@@ -266,7 +276,6 @@ Int_t THcCoinTime::Process( const THaEvData& evdata )
had_P = theSHMSTrack->GetP(); //hadron golden track arm momentum
sign=1;
}
//beta calculations beta = v/c = p/E
elecArm_BetaCalc = elec_P / sqrt(elec_P*elec_P + elecMass*elecMass);
hadArm_BetaCalc_proton = had_P / sqrt(had_P*had_P + protonMass*protonMass);
......@@ -302,9 +311,10 @@ Int_t THcCoinTime::Process( const THaEvData& evdata )
fROC2_ePiCoinTime = fROC2_RAW_CoinTime + sign*( elec_coinCorr - had_coinCorr_Pion) - eHad_CT_Offset;
//POSITRON
fROC1_ePosCoinTime = fROC1_RAW_CoinTime + sign*( elec_coinCorr + had_coinCorr_Positron) - eHad_CT_Offset ;
fROC2_ePosCoinTime = fROC2_RAW_CoinTime + sign*( elec_coinCorr + had_coinCorr_Positron) - eHad_CT_Offset;
fROC1_ePosCoinTime = fROC1_RAW_CoinTime + sign*( elec_coinCorr - had_coinCorr_Positron) - eHad_CT_Offset ;
fROC2_ePosCoinTime = fROC2_RAW_CoinTime + sign*( elec_coinCorr - had_coinCorr_Positron) - eHad_CT_Offset;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment