#include <AlgFarDetStrip.h>
Inheritance diagram for AlgFarDetStrip:

Public Member Functions | |
| AlgFarDetStrip () | |
| virtual | ~AlgFarDetStrip () |
| virtual void | RunAlg (AlgConfig &ac, CandHandle &ch, CandContext &cx) |
| virtual void | Trace (const char *c) const |
|
|
Definition at line 29 of file AlgFarDetStrip.cxx. References MSG. 00030 {
00031 MSG("FarDetStrip",Msg::kVerbose) << " AlgFarDetStrip::AlgFarDetStrip() " << endl;
00032
00033 }
|
|
|
Definition at line 35 of file AlgFarDetStrip.cxx. References MSG. 00036 {
00037 MSG("FarDetStrip",Msg::kVerbose) << " AlgFarDetStrip::~AlgFarDetStrip() " << endl;
00038
00039 }
|
|
||||||||||||||||
|
Implements AlgBase. Definition at line 41 of file AlgFarDetStrip.cxx. References CandHandle::AddDaughterLink(), UgliStripHandle::ClearFiber(), PlexSEIdAltL::GetBestSEId(), VaDigit::GetCandDigitHandle(), CandContext::GetCandRecord(), FarDetStripHandle::GetCharge(), CandDigitHandle::GetCharge(), VaDigit::GetChargeAdc(), VaDigit::GetCrossTalkChargeAdc(), CandContext::GetDataIn(), PlexStripEndId::GetEnd(), UgliStripHandle::GetHalfLength(), CandHandle::GetNDaughters(), FarDetStripHandle::GetPlane(), PlexPlaneId::GetPlane(), CandDigitHandle::GetPlexSEIdAltL(), UgliGeomHandle::GetScintPlnHandle(), FarDetStripHandle::GetStrip(), PlexStripEndId::GetStrip(), UgliGeomHandle::GetStripHandle(), CandDigitHandle::GetSubtractedTime(), FarDetStripHandle::GetTime(), UgliStripHandle::GetTPos(), RecMinos::GetVldContext(), UgliPlnHandle::GetZ0(), MSG, CandStripHandle::SetBestStripEndId(), CandStripHandle::SetCalTimeType(), FarDetStripHandle::SetCharge(), FarDetStripHandle::SetCorrectedTime(), FarDetStripHandle::SetFibreLengths(), FarDetStripHandle::SetPlane(), FarDetStripHandle::SetStrip(), FarDetStripHandle::SetTime(), CandStripHandle::SetTPos(), CandStripHandle::SetZPos(), and UgliStripHandle::WlsPigtail(). 00043 {
00044 MSG("FarDetStrip",Msg::kVerbose) << " AlgFarDetStrip::RunAlg(...) " << endl;
00045
00046 FarDetStripHandle& mystrip = dynamic_cast<FarDetStripHandle&>(ch);
00047
00048 Double_t corr=1.0;
00049 Double_t indx=1.77;
00050 Int_t i;
00051
00052 const TObjArray* myarray = dynamic_cast<const TObjArray*>(cx.GetDataIn());
00053 CandRecord* candrec = (CandRecord*)(cx.GetCandRecord());
00054 VldContext* vldc = (VldContext*)(candrec->GetVldContext());
00055 UgliGeomHandle ugh(*vldc);
00056 PlexHandle ph(*vldc);
00057
00058 Double_t myTime[3];
00059 Double_t myCorrTime[3];
00060 Double_t myChargeNone[2];
00061 Double_t myChargeAdc[2];
00062 Double_t myChargePE[2];
00063 Double_t myChargeSigLin[2];
00064 Double_t myChargeSigCorr[2];
00065 Double_t myChargePEcorr[2];
00066 Double_t myGreenFibre[2];
00067 Double_t myWlsPigtail[2];
00068 Double_t myClearFibre[2];
00069 Double_t myHalfLength;
00070
00071 for(i=0;i<3;i++){
00072 myTime[i] = 0.0;
00073 myCorrTime[i] = 0.0;
00074 }
00075
00076 for(i=0;i<2;i++){
00077 myChargeNone[i] = 0.0;
00078 myChargeAdc[i] = 0.0;
00079 myChargePE[i] = 0.0;
00080 myChargeSigLin[i] = 0.0;
00081 myChargeSigCorr[i] = 0.0;
00082 myChargePEcorr[i] = 0.0;
00083 myGreenFibre[i] = 0.0;
00084 myWlsPigtail[i] = 0.0;
00085 myClearFibre[i] = 0.0;
00086 }
00087
00088 myHalfLength = 0.0;
00089
00090 CalTimeType::CalTimeType_t mycaltimetype = CalTimeType::kT0;
00091
00092
00093 for(i=0;i<1+myarray->GetLast();i++){
00094 VaDigit* vadigit = (VaDigit*)(myarray->At(i));
00095 corr = (vadigit->GetChargeAdc()+vadigit->GetCrossTalkChargeAdc())/(vadigit->GetChargeAdc());
00096
00097 CandDigitHandle* digit = (CandDigitHandle*)(vadigit->GetCandDigitHandle());
00098 PlexStripEndId pSEId = digit->GetPlexSEIdAltL().GetBestSEId();
00099
00100 if(!i){
00101 mystrip.SetBestStripEndId(pSEId);
00102 UgliStripHandle striphandle = ugh.GetStripHandle(pSEId);
00103 UgliScintPlnHandle scintplnhandle = ugh.GetScintPlnHandle(pSEId);
00104
00105 myGreenFibre[0] = striphandle.GetHalfLength();
00106 myWlsPigtail[0] = striphandle.WlsPigtail(StripEnd::kNegative);
00107 myClearFibre[0] = striphandle.ClearFiber(StripEnd::kNegative);
00108
00109 myGreenFibre[1]=striphandle.GetHalfLength();
00110 myWlsPigtail[1]=striphandle.WlsPigtail(StripEnd::kPositive);
00111 myClearFibre[1]=striphandle.ClearFiber(StripEnd::kPositive);
00112
00113 myHalfLength = striphandle.GetHalfLength();
00114
00115 mystrip.SetPlane(pSEId.GetPlane());
00116 mystrip.SetStrip(pSEId.GetStrip());
00117 mystrip.SetTPos(striphandle.GetTPos());
00118 mystrip.SetZPos(scintplnhandle.GetZ0());
00119 }
00120
00121 if(pSEId.GetEnd()==StripEnd::kNegative){
00122 myTime[0] = digit->GetSubtractedTime(mycaltimetype);
00123 myCorrTime[0] = myTime[0] - (indx/3.0e8)*(myWlsPigtail[0]+myClearFibre[0]);
00124 myChargeNone[0] = digit->GetCharge(CalDigitType::kNone);
00125 myChargeAdc[0] = corr*(digit->GetCharge(CalDigitType::kNone));
00126 myChargePE[0] = corr*(digit->GetCharge(CalDigitType::kPE));
00127 myChargeSigLin[0] = corr*(digit->GetCharge(CalDigitType::kSigLin));
00128 myChargeSigCorr[0] = corr*(digit->GetCharge(CalDigitType::kSigCorr));
00129 myChargePEcorr[0] = myChargeSigCorr[0]/67.5;
00130
00131 MSG("FarDetStrip",Msg::kVerbose) << " -ve : "
00132 << " Qraw=" << myChargeNone[0]
00133 << " Qadc=" << myChargeAdc[0]
00134 << " Qpe=" << myChargePE[0]
00135 << " QpeCorr=" << myChargePEcorr[0] << endl;
00136 }
00137
00138 if(pSEId.GetEnd()==StripEnd::kPositive){
00139 myTime[1] = digit->GetSubtractedTime(mycaltimetype);
00140 myCorrTime[1] = myTime[1] - (indx/3.0e8)*(myWlsPigtail[1]+myClearFibre[1]);
00141 myChargeNone[1] = digit->GetCharge(CalDigitType::kNone);
00142 myChargeAdc[1] = corr*(digit->GetCharge(CalDigitType::kNone));
00143 myChargePE[1] = corr*(digit->GetCharge(CalDigitType::kPE));
00144 myChargeSigLin[1] = corr*(digit->GetCharge(CalDigitType::kSigLin));
00145 myChargeSigCorr[1] = corr*(digit->GetCharge(CalDigitType::kSigCorr));
00146 myChargePEcorr[1] = myChargeSigCorr[1]/67.5;
00147
00148 MSG("FarDetStrip",Msg::kVerbose) << " +ve : "
00149 << " Qraw=" << myChargeNone[1]
00150 << " Qadc=" << myChargeAdc[1]
00151 << " Qpe=" << myChargePE[1]
00152 << " QpeCorr=" << myChargePEcorr[1] << endl;
00153
00154 }
00155
00156 mystrip.AddDaughterLink(*digit);
00157 }
00158
00159 Double_t Sqct=0.0,Sqt=0.0,Sq=0.0;
00160 for(i=0;i<2;i++){
00161 Sqct+=myCorrTime[i]*myChargePE[i];
00162 Sqt+=myTime[i]*myChargePE[i];
00163 Sq+=myChargePE[i];
00164 }
00165 if(Sq>0.0){
00166 myCorrTime[2] = Sqct/Sq;
00167 myTime[2] = Sqt/Sq;
00168 }
00169
00170 mystrip.SetTime(myTime);
00171 mystrip.SetCorrectedTime(myCorrTime);
00172 mystrip.SetCalTimeType(mycaltimetype);
00173
00174 mystrip.SetCharge(CalDigitType::kNone,myChargeAdc);
00175 mystrip.SetCharge(CalDigitType::kPE,myChargePE);
00176 mystrip.SetCharge(CalDigitType::kSigLin,myChargePE);
00177 mystrip.SetCharge(CalDigitType::kSigCorr,myChargePEcorr);
00178
00179 mystrip.SetFibreLengths(myGreenFibre,myWlsPigtail,myClearFibre,myHalfLength);
00180
00181 MSG("FarDetStrip",Msg::kDebug) << " CANDSTRIP : "
00182 << " (" << mystrip.GetNDaughters() << ")"
00183 << " " << mystrip.GetPlane()
00184 << " " << mystrip.GetStrip()
00185 << " " << mystrip.GetCharge()
00186 << " " << 1.0e9*mystrip.GetTime() << endl;
00187 }
|
|
|
Reimplemented from AlgBase. Definition at line 189 of file AlgFarDetStrip.cxx. 00190 {
00191
00192 }
|
1.3.9.1