Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

AlgFarDetStrip Class Reference

#include <AlgFarDetStrip.h>

Inheritance diagram for AlgFarDetStrip:

AlgBase List of all members.

Public Member Functions

 AlgFarDetStrip ()
virtual ~AlgFarDetStrip ()
virtual void RunAlg (AlgConfig &ac, CandHandle &ch, CandContext &cx)
virtual void Trace (const char *c) const

Constructor & Destructor Documentation

AlgFarDetStrip::AlgFarDetStrip  ) 
 

Definition at line 29 of file AlgFarDetStrip.cxx.

References MSG.

00030 {
00031   MSG("FarDetStrip",Msg::kVerbose) << " AlgFarDetStrip::AlgFarDetStrip() " << endl;
00032   
00033 }   

AlgFarDetStrip::~AlgFarDetStrip  )  [virtual]
 

Definition at line 35 of file AlgFarDetStrip.cxx.

References MSG.

00036 {
00037   MSG("FarDetStrip",Msg::kVerbose) << " AlgFarDetStrip::~AlgFarDetStrip() " << endl;
00038   
00039 }


Member Function Documentation

void AlgFarDetStrip::RunAlg AlgConfig ac,
CandHandle ch,
CandContext cx
[virtual]
 

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 }

void AlgFarDetStrip::Trace const char *  c  )  const [virtual]
 

Reimplemented from AlgBase.

Definition at line 189 of file AlgFarDetStrip.cxx.

00190 {
00191 
00192 }


The documentation for this class was generated from the following files:
Generated on Thu Nov 1 15:55:24 2007 for loon by  doxygen 1.3.9.1