Skip to content
Snippets Groups Projects
Commit e5317329 authored by Zafar's avatar Zafar
Browse files

Golden track.

Bugs fixed.
parent f5da09b2
No related branches found
No related tags found
No related merge requests found
...@@ -2,17 +2,29 @@ ...@@ -2,17 +2,29 @@
set called=($_) set called=($_)
if ("$called" != "") then if ("$called" != "") then
set scriptdir=$called[2] set scriptdir=$called[2]
set MYDIR=`dirname $scriptdir` echo $scriptdir
set MYDIR=`cd $MYDIR && pwd` # ensure absolute path # set MYDIR=`dirname $scriptdir`
# set MYDIR=`cd $MYDIR && pwd` # ensure absolute path
set MYDIR=`pwd` # ensure absolute path
# echo $MYDIR
# echo "Are we here"
else else
set scriptdir=$1 set scriptdir=$1
set MYDIR=$scriptdir set MYDIR=$scriptdir
endif endif
setenv ANALYZER $MYDIR/podd setenv ANALYZER $MYDIR/podd
setenv HCANALYZER $MYDIR setenv HCANALYZER $MYDIR
# Check if LD_LIBRARY_PATH is defined # Check if LD_LIBRARY_PATH is defined
if ( ! ($?LD_LIBRARY_PATH) ) then if ( ! ($?LD_LIBRARY_PATH) ) then
setenv LD_LIBRARY_PATH "" setenv LD_LIBRARY_PATH ""
endif endif
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:${ANALYZER}:${HCANALYZER}" setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:${ANALYZER}:${HCANALYZER}"
echo $ANALYZER
echo $HCANALYZER
...@@ -153,7 +153,7 @@ Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date ) ...@@ -153,7 +153,7 @@ Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date )
cout << "In THcHallCSpectrometer::ReadDatabase()" << endl; cout << "In THcHallCSpectrometer::ReadDatabase()" << endl;
#endif #endif
MAXHODHITS = 30; MAXHODHITS = 53;
fX2D = new Double_t [MAXHODHITS]; fX2D = new Double_t [MAXHODHITS];
fY2D = new Double_t [MAXHODHITS]; fY2D = new Double_t [MAXHODHITS];
...@@ -426,11 +426,12 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -426,11 +426,12 @@ Int_t THcHallCSpectrometer::TrackCalc()
Double_t fY2Dmin, fX2Dmin, fZap, ft, fChi2PerDeg; //, fShowerEnergy; Double_t fY2Dmin, fX2Dmin, fZap, ft, fChi2PerDeg; //, fShowerEnergy;
Double_t fHitPos4, fHitPos3, fHitDist3, fHitDist4; //, fChi2Min; Double_t fHitPos4, fHitPos3, fHitDist3, fHitDist4; //, fChi2Min;
Int_t i, j, itrack, ip, ihit; //, fGoodTimeIndex = -1; Int_t i, j, itrack, ip, ihit; //, fGoodTimeIndex = -1;
Int_t fHitCnt4, fHitCnt3, fRawIndex = -1, fGoodRawPad; Int_t fHitCnt4, fHitCnt3, fRawIndex, fGoodRawPad;
fChi2Min = 10000000000.0; fGoodTrack = -1; fY2Dmin = 100.; fChi2Min = 10000000000.0; fGoodTrack = -1; fY2Dmin = 100.;
fX2Dmin = 100.; fZap = 0.; fX2Dmin = 100.; fZap = 0.;
fRawIndex = -1;
for ( itrack = 0; itrack < fNtracks; itrack++ ){ for ( itrack = 0; itrack < fNtracks; itrack++ ){
THaTrack* goodTrack = static_cast<THaTrack*>( fTracks->At(itrack) ); THaTrack* goodTrack = static_cast<THaTrack*>( fTracks->At(itrack) );
...@@ -446,24 +447,31 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -446,24 +447,31 @@ Int_t THcHallCSpectrometer::TrackCalc()
( goodTrack->GetEnergy() > fSelEtMin ) && ( goodTrack->GetEnergy() > fSelEtMin ) &&
( goodTrack->GetEnergy() < fSelEtMax ) ) ( goodTrack->GetEnergy() < fSelEtMax ) )
{ {
for ( j = 0; j < 16; j++ ){ f2XHits[j] = 0; } for ( j = 0; j < 16; j++ ){
for ( j = 0; j < 16; j++ ){ f2YHits[j] = 0; } f2XHits[j] = -1;
f2YHits[j] = -1;
}
for ( ip = 0; ip < fNPlanes; ip++ ){ for ( ip = 0; ip < fNPlanes; ip++ ){
for ( ihit = 0; ihit < fHodo->GetNScinHits(ip); ihit++ ){ for ( ihit = 0; ihit < fHodo->GetNScinHits(ip); ihit++ ){
fRawIndex ++; fRawIndex ++;
fGoodRawPad = fHodo->GetGoodRawPad(fRawIndex)-1;
// fGoodRawPad = fHodo->GetGoodRawPad(fRawIndex)-1;
if ( ip == 2 ) fGoodRawPad = fHodo->GetGoodRawPad(fRawIndex);
f2XHits[fGoodRawPad] = 0;
if ( ip == 2 ){
if ( ip == 3 ) f2XHits[fGoodRawPad] = 0;
f2YHits[fGoodRawPad] = 0; }
if ( ip == 3 ){
f2YHits[fGoodRawPad] = 0;
}
} // loop over hits of a plane } // loop over hits of a plane
} // loop over planes } // loop over planes
fHitPos4 = goodTrack->GetY() + goodTrack->GetPhi() * ( fScin2YZpos + 0.5 * fScin2YdZpos ); fHitPos4 = goodTrack->GetY() + goodTrack->GetPhi() * ( fScin2YZpos + 0.5 * fScin2YdZpos );
fHitCnt4 = TMath::Nint( ( fHodo->GetHodoCenter4() - fHitPos4 ) / fHodo->GetScin2YSpacing() ) + 1; fHitCnt4 = TMath::Nint( ( fHodo->GetHodoCenter4() - fHitPos4 ) / fHodo->GetScin2YSpacing() ) + 1;
fHitCnt4 = TMath::Max( TMath::Min(fHitCnt4,TMath::Nint(10) ) , 1); // scin_2y_nr = 10 fHitCnt4 = TMath::Max( TMath::Min(fHitCnt4,TMath::Nint(10) ) , 1); // scin_2y_nr = 10
...@@ -476,12 +484,10 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -476,12 +484,10 @@ Int_t THcHallCSpectrometer::TrackCalc()
ft = 0; ft = 0;
for ( i = 0; i < 10; i++ ){ for ( i = 0; i < 10; i++ ){
if ( f2YHits[i] == 0 ) {
if ( f2YHits[fGoodRawPad] == 1 ) {
fY2D[itrack] = TMath::Abs(fHitCnt4-i-1); fY2D[itrack] = TMath::Abs(fHitCnt4-i-1);
ft ++; ft ++;
if ( ft == 1 ) fZap = fY2D[itrack]; if ( ft == 1 ) fZap = fY2D[itrack];
if ( ( ft == 2 ) && ( fY2D[itrack] < fZap ) ) fZap = fY2D[itrack]; if ( ( ft == 2 ) && ( fY2D[itrack] < fZap ) ) fZap = fY2D[itrack];
if ( ( ft == 3 ) && ( fY2D[itrack] < fZap ) ) fZap = fY2D[itrack]; if ( ( ft == 3 ) && ( fY2D[itrack] < fZap ) ) fZap = fY2D[itrack];
...@@ -503,13 +509,13 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -503,13 +509,13 @@ Int_t THcHallCSpectrometer::TrackCalc()
//---------------------------------------------------------------- //----------------------------------------------------------------
if ( fNtracks > 1 ){ // Plane 3 if ( fNtracks > 1 ){ // Plane 3 (2X)
fZap = 0.; fZap = 0.;
ft = 0; ft = 0;
for ( i = 0; i < 16; i++ ){ for ( i = 0; i < 16; i++ ){
if ( f2XHits[fGoodRawPad] == 1 ) { if ( f2XHits[i] == 0 ) {
fX2D[itrack] = TMath::Abs(fHitCnt3-i-1); fX2D[itrack] = TMath::Abs(fHitCnt3-i-1);
ft ++; ft ++;
if ( ft == 1 ) fZap = fX2D[itrack]; if ( ft == 1 ) fZap = fX2D[itrack];
if ( ( ft == 2 ) && ( fX2D[itrack] < fZap ) ) fZap = fX2D[itrack]; if ( ( ft == 2 ) && ( fX2D[itrack] < fZap ) ) fZap = fX2D[itrack];
...@@ -527,7 +533,7 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -527,7 +533,7 @@ Int_t THcHallCSpectrometer::TrackCalc()
if ( fNtracks == 1 ) if ( fNtracks == 1 )
fX2D[itrack] = 0.; fX2D[itrack] = 0.;
if ( fY2D[itrack] <= fY2Dmin ) { if ( fY2D[itrack] <= fY2Dmin ) {
if ( fY2D[itrack] < fY2Dmin ) { if ( fY2D[itrack] < fY2Dmin ) {
fX2Dmin = 100.; fX2Dmin = 100.;
...@@ -551,8 +557,7 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -551,8 +557,7 @@ Int_t THcHallCSpectrometer::TrackCalc()
} }
} // condition fX2D } // condition fX2D
} // condition fY2D } // condition fY2D
} // conditions for dedx, beta and trac energy } // conditions for dedx, beta and trac energy
} // confition for fNFreeFP greater than fSelNDegreesMin } // confition for fNFreeFP greater than fSelNDegreesMin
} // loop over tracks } // loop over tracks
...@@ -586,6 +591,13 @@ Int_t THcHallCSpectrometer::TrackCalc() ...@@ -586,6 +591,13 @@ Int_t THcHallCSpectrometer::TrackCalc()
} }
// if ( fHodo->GetEvent() == 11351 ){
cout << "hcana_event " << fHodo->GetEvent()
<< " golden_track " << fGoodTrack + 1
<< " chimin " << fChi2Min
<< endl;
// }
return TrackTimes( fTracks ); return TrackTimes( fTracks );
} }
......
...@@ -361,7 +361,7 @@ void THcHodoscope::DefineArray(const char* fName, char** Suffix, const Int_t ind ...@@ -361,7 +361,7 @@ void THcHodoscope::DefineArray(const char* fName, char** Suffix, const Int_t ind
Int_t THcHodoscope::ReadDatabase( const TDatime& date ) Int_t THcHodoscope::ReadDatabase( const TDatime& date )
{ {
MAXHODHITS = 30; MAXHODHITS = 53;
fBeta = new Double_t[ MAXHODHITS ]; fBeta = new Double_t[ MAXHODHITS ];
fBetaChisq = new Double_t[ MAXHODHITS ]; fBetaChisq = new Double_t[ MAXHODHITS ];
...@@ -441,8 +441,18 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date ) ...@@ -441,8 +441,18 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
fHodoNegInvAdcAdc=new Double_t [fMaxHodoScin]; fHodoNegInvAdcAdc=new Double_t [fMaxHodoScin];
prefix[1]='\0'; prefix[1]='\0';
DBRequest list[]={ DBRequest list[]={
// {"scin_2x_zpos", &fScin2XZpos, kDouble, 0, 1},
// {"scin_2x_dzpos", &fScin2XdZpos, kDouble, 0, 1},
// {"scin_2y_zpos", &fScin2YZpos, kDouble, 0, 1},
// {"scin_2y_dzpos", &fScin2YdZpos, kDouble, 0, 1},
// {"sel_betamin", &fSelBetaMin, kDouble, 0, 1},
// {"sel_dedx1min", &fSeldEdX1Min, kDouble, 0, 1},
// {"sel_dedx1max", &fSeldEdX1Max, kDouble, 0, 1},
// {"sel_using_scin", &fSelUsingScin, kInt, 0, 1},
// {"sel_ndegreesmin", &fSelNDegreesMin, kDouble, 0, 1},
{"start_time_center", &fStartTimeCenter, kDouble}, {"start_time_center", &fStartTimeCenter, kDouble},
{"start_time_slop", &fStartTimeSlop, kDouble}, {"start_time_slop", &fStartTimeSlop, kDouble},
{"scin_tdc_to_time", &fScinTdcToTime, kDouble}, {"scin_tdc_to_time", &fScinTdcToTime, kDouble},
...@@ -468,6 +478,20 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date ) ...@@ -468,6 +478,20 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
fTofTolerance = 3.0; // Default if not defined fTofTolerance = 3.0; // Default if not defined
gHcParms->LoadParmValues((DBRequest*)&list,prefix); gHcParms->LoadParmValues((DBRequest*)&list,prefix);
cout << "\n\n\n\n\n\nPaddles1x = " << fNPaddle[0]
<< "\nscin_2y_zpos = " << fScin2YZpos
<< "\nscin_2y_dzpos = " << fScin2YdZpos
<< endl;
// << "\ndedx max = " << fSeldEdX1Max
// << "\nbeta min = " << fSelBetaMin
// << "\nbeta max = " << fSelBetaMax
// << "\net min = " << fSelEtMin
// << "\net max = " << fSelEtMax
// << endl;
if (fTofUsingInvAdc) { if (fTofUsingInvAdc) {
DBRequest list2[]={ DBRequest list2[]={
{"hodo_pos_invadc_offset",&fHodoPosInvAdcOffset[0],kDouble,fMaxHodoScin}, {"hodo_pos_invadc_offset",&fHodoPosInvAdcOffset[0],kDouble,fMaxHodoScin},
...@@ -1039,9 +1063,10 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks ) ...@@ -1039,9 +1063,10 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
fRawIndex ++; fRawIndex ++;
fPaddle = ((THcSignalHit*)scinPosTDC->At(ihit))->GetPaddleNumber()-1; fPaddle = ((THcSignalHit*)scinPosTDC->At(ihit))->GetPaddleNumber()-1;
fHitPaddle[fGoodTimeIndex] = fPaddle; fHitPaddle[fGoodTimeIndex] = fPaddle;
fGoodRawPad[fRawIndex] = fPlanes[ip]->GetGoodRawPadNum(ihit); // fGoodRawPad[fRawIndex] = fPlanes[ip]->GetGoodRawPadNum(ihit);
fGoodRawPad[fRawIndex] = fPaddle;
fXcoord = theTrack->GetX() + theTrack->GetTheta() * fXcoord = theTrack->GetX() + theTrack->GetTheta() *
( fPlanes[ip]->GetZpos() + ( fPaddle % 2 ) * fPlanes[ip]->GetDzpos() ); // Line 277 ( fPlanes[ip]->GetZpos() + ( fPaddle % 2 ) * fPlanes[ip]->GetDzpos() ); // Line 277
...@@ -1178,6 +1203,14 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks ) ...@@ -1178,6 +1203,14 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
// } // }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// fdEdX[itrack][ihit] = 5.0;
// --------------------------------------------------------------------------------------------
// Date: July 8 201 May be we need this, not sure.
//
if ( fGoodTDCPos[fGoodTimeIndex] ){ if ( fGoodTDCPos[fGoodTimeIndex] ){
if ( fGoodTDCNeg[fGoodTimeIndex] ){ if ( fGoodTDCNeg[fGoodTimeIndex] ){
...@@ -1213,6 +1246,11 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks ) ...@@ -1213,6 +1246,11 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
} // Second loop over hits of a scintillator plane ends here } // Second loop over hits of a scintillator plane ends here
} // Loop over scintillator planes ends here } // Loop over scintillator planes ends here
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -1299,7 +1337,13 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks ) ...@@ -1299,7 +1337,13 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
// -------------------------------------------------------------------- // --------------------------------------------------------------------
// -------------------------------------------------------------------- // --------------------------------------------------------------------
// -------------------------------------------------------------------- // --------------------------------------------------------------------
// --------------------------------------------------------------------
// --------------------------------------------------------------------
// --------------------------------------------------------------------
// --------------------------------------------------------------------
// --------------------------------------------------------------------
} }
else { else {
...@@ -1328,6 +1372,10 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks ) ...@@ -1328,6 +1372,10 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
} }
} }
// fBetaChisq[itrack]
// fFPTime[ind]
theTrack->SetDedx(fdEdX[itrack][0]); theTrack->SetDedx(fdEdX[itrack][0]);
theTrack->SetBeta(fBeta[itrack]); theTrack->SetBeta(fBeta[itrack]);
theTrack->SetBetaChi2( fBetaChisq[itrack] ); theTrack->SetBetaChi2( fBetaChisq[itrack] );
......
...@@ -78,7 +78,7 @@ public: ...@@ -78,7 +78,7 @@ public:
// Double_t GetBeta() const {return fBeta[];} // Double_t GetBeta() const {return fBeta[];}
Double_t GetBeta(Int_t iii) const {return fBeta[iii];} Double_t GetBeta(Int_t iii) const {return fBeta[iii];} // Ahmed
Int_t GetEvent(){ return fCheckEvent;} Int_t GetEvent(){ return fCheckEvent;}
Double_t GetHodoPosSigma(Int_t iii) const {return fHodoPosSigma[iii];} Double_t GetHodoPosSigma(Int_t iii) const {return fHodoPosSigma[iii];}
...@@ -92,6 +92,8 @@ public: ...@@ -92,6 +92,8 @@ public:
THcHodoscope(); // for ROOT I/O THcHodoscope(); // for ROOT I/O
protected: protected:
// std::vector<bool> myScinGoodTime; // Ahmed
Int_t fAnalyzePedestals; Int_t fAnalyzePedestals;
// Calibration // Calibration
...@@ -141,7 +143,7 @@ protected: ...@@ -141,7 +143,7 @@ protected:
TClonesArray* fTrackProj; // projection of track onto scintillator plane TClonesArray* fTrackProj; // projection of track onto scintillator plane
// and estimated match to TOF paddle // and estimated match to TOF paddle
//-------------------------- Beta variables ----------------------------- //-------------------------- Ahmed -----------------------------
THcShower* fShower; THcShower* fShower;
......
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