Fork me on GitHub

Changeset 00b14d5 in git for external


Ignore:
Timestamp:
Feb 22, 2022, 2:56:43 PM (3 years ago)
Author:
Franco BEDESCHI <bed@…>
Branches:
master
Children:
56fb0be
Parents:
5c03893
Message:

First hit calculation added

Location:
external/TrackCovariance
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • external/TrackCovariance/ObsTrk.cc

    r5c03893 r00b14d5  
    134134        Double_t ZinNeg = fG->GetZminNeg();
    135135        Bool_t inside = TrkUtil::IsInside(fGenX, Rin, ZinNeg, ZinPos); // Check if in inner box
     136        SolTrack* trk = new SolTrack(fGenX, fGenP, fG);
     137        Double_t Xfirst, Yfirst, Zfirst;
     138        Int_t iLay = trk->FirstHit(Xfirst, Yfirst, Zfirst);
     139        TVector3 fXfirst(Xfirst, Yfirst, Zfirst);
    136140        if (inside)
    137141        {
     
    147151                //std::cout<<"ObsTrk:: outside: x= "<<fGenX(0)<<", y= "<<fGenX(1)
    148152                //                         <<", z= "<<fGenX(2)<<std::endl;
    149                 SolTrack* trk = new SolTrack(fGenX, fGenP, fG);
    150153                Bool_t Res = kTRUE; Bool_t MS = kTRUE;
    151154                trk->CovCalc(Res, MS);                                  // Calculate covariance matrix
    152                 Cov = trk->Cov();                                       // Track covariance
    153                 delete trk;
    154         }
     155                Cov = trk->Cov();
     156        }                                       // Track covariance
     157        delete trk;
    155158        //
    156159        fCov = Cov;
  • external/TrackCovariance/ObsTrk.h

    r5c03893 r00b14d5  
    4646        TMatrixDSym fCovILC;                    // Covariance of track parameters in ILC format
    4747                                                                        // (d0, phi0, w, z0, tan(lambda))
     48        TVector3 fXfirst;                       // x,y,z of first track hit
    4849        //
    4950        // Service routines
     
    8990        TMatrixDSym GetCovMm()  { return fCov; }        // in mm
    9091        TMatrixDSym GetCovACTS(){ return fCovACTS; }
    91         TMatrixDSym GetCovILC(){ return fCovILC; }
    92         //
     92        TMatrixDSym GetCovILC() { return fCovILC; }
     93        // First hit
     94        TVector3 GetFirstHit()  { return fXfirst; }
    9395};
    9496
  • external/TrackCovariance/SolTrack.cc

    r5c03893 r00b14d5  
    232232        //
    233233        return kmh;
     234}
     235//
     236Int_t SolTrack::FirstHit(Double_t &Xfirst, Double_t &Yfirst, Double_t &Zfirst)
     237{
     238        Int_t iFirst = -1;     
     239        Int_t iFirstLay = -1;   // Default return with no hits
     240        Xfirst = 0.;
     241        Yfirst = 0.;
     242        Zfirst = 0.;
     243        Int_t Nmh = nmHit();    // # measurement hits
     244        if(Nmh > 0){
     245                Int_t    *ih = new Int_t   [Nmh];
     246                Double_t *Xh = new Double_t[Nmh];
     247                Double_t *Yh = new Double_t[Nmh];
     248                Double_t *Zh = new Double_t[Nmh];
     249                Double_t *dh = new Double_t[Nmh];
     250                //
     251                Int_t n = HitListXYZ(ih, Xh, Yh, Zh);   
     252                //
     253                for(Int_t i=0; i<Nmh; i++){
     254                        Double_t rr = TMath::Sqrt(Xh[i]*Xh[i]+Yh[i]*Yh[i]);     // Hit radius           
     255                        dh[i] = TMath::ASin(C() * TMath::Sqrt((rr * rr - D() * D()) / (1. + 2 * C() * D()))) / C();     // Arc length traveled
     256                }
     257                //
     258                Int_t *hord = new Int_t[Nmh];                   // hit order by increasing arc length
     259                TMath::Sort(Nmh, dh, hord, kFALSE);             // Order by increasing arc length
     260                iFirst = hord[0];                               // First hit pointer
     261                Xfirst = Xh[iFirst];
     262                Yfirst = Yh[iFirst];
     263                Zfirst = Zh[iFirst];
     264                iFirstLay = ih[iFirst];
     265                //
     266                // Clean
     267                delete [] ih;
     268                delete [] Xh;
     269                delete [] Yh;
     270                delete [] Zh;
     271                delete [] dh;
     272                delete [] hord;
     273        }
     274//
     275        return  iFirstLay;      // Return first hit layer number
    234276}
    235277//
  • external/TrackCovariance/SolTrack.h

    r5c03893 r00b14d5  
    7373        Int_t HitList(Int_t *&ihh, Double_t *&rhh, Double_t *&zhh);
    7474        Int_t HitListXYZ(Int_t *&ihh, Double_t *&Xh, Double_t *&Yh, Double_t *&Zh);
     75        Int_t FirstHit(Double_t &Xfirst, Double_t &Yfirst, Double_t &Zfirst);   // First hit position
    7576        //
    7677        // Track graph
Note: See TracChangeset for help on using the changeset viewer.