Fork me on GitHub

Changes in / [a1a25d4:d3165fa] in git


Ignore:
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • examples/Example6.C

    ra1a25d4 rd3165fa  
    5151        // Track parameter pulls
    5252        TH1* histDpull = new TH1F("h_Dpull", "Pull impact parameter", 100, -10., 10.);
    53         TH1* histP0pull = new TH1F("h_P0pull", "Pull #phi_{0}", 100, -10., 10.);
     53        TH1* histP0pull = new TH1F("h_P0pull", "Pull phi_{0}", 100, -10., 10.);
    5454        TH1* histCpull = new TH1F("h_Cpull", "Pull half curvature", 100, -10., 10.);
    55         TH1* histZ0pull = new TH1F("h_Z0pull", "Pull Z_{0}", 100, -10., 10.);
     55        TH1* histZ0pull = new TH1F("h_Z0pull", "Pull Z0", 100, -10., 10.);
    5656        TH1* histCtpull = new TH1F("h_Ctpull", "Pull cotg(#theta)", 100, -10., 10.);
    5757        //
     
    6464        // CEntral track over min Pt
    6565        TH1* histPtgenC = new TH1F("h_PtgenC", "Generated Pt - Central", 500, 0., 50.);         // pt for central tracks;
    66         TH1* histPtobsC = new TH1F("h_PtobsC", "Reconstructed Pt - Central", 500, 0., 50.);     // pt for central 
     66        TH1* histPtobsC = new TH1F("h_PtobsC", "Reconstructed Pt - Central", 500, 0., 50.);     // pt for central
    6767        TH1* histCtgenH = new TH1F("h_CtgenH", "Generateded Cotangent", 100, -10., 10.);                // cot(theta) for high pt tracks;
    6868        TH1* histCtobsH = new TH1F("h_CtobsH", "Reconstructed Cotangent", 100, -10., 10.);      // cot(theta) for high pt tracks
     
    7171        TH1* histAccPt = new TH1F("h_AccPt", "Pt acceptance", 500, 0., 50.);
    7272        // Tracks over min pt
    73         TH1* histAccCtgH = new TH1F("h_AccCtgH", "Cotangent acceptance (high pt)", 100, -10., 10.);
     73        TH1* histAccCtgH = new TH1F("h_AccCtgH", "Cotangent acceptance (high pt)", 500, -10., 10.);
    7474        // tracks above min angle
    7575        TH1* histAccPtC = new TH1F("h_AccPtC", "Pt acceptance (central tracks)", 500, 0., 50.);
    7676
    7777        //
    78         // Get magnetifc field
     78        // Get magnetic field
    7979        Double_t Bz = 2.0;
    8080
     
    106106                                histZ0obs->Fill(obsZ0);
    107107                                histCtobs->Fill(obsCtg);
    108                                 //
    109                                 // Get associated generated particle
     108
    110109                                GenParticle* gp = (GenParticle*)trk->Particle.GetObject();
    111                                 //
     110
    112111                                // Position of origin in meters
    113112                                Double_t x = 1.0e-3 * gp->X;
     
    140139                                Double_t pullZ0  = (obsZ0  - genZ0)  / trk->ErrorDZ;
    141140                                Double_t pullCtg = (obsCtg - genCtg) / trk->ErrorCtgTheta;
    142                                 //
    143                                 histDpull ->Fill(pullD0);
     141
     142                                //
     143                                histDpull->Fill(pullD0);
    144144                                histP0pull->Fill(pullPhi);
    145                                 histCpull ->Fill(pullC);
     145                                histCpull->Fill(pullC);
    146146                                histZ0pull->Fill(pullZ0);
    147147                                histCtpull->Fill(pullCtg);
     
    149149                                // Acceptance plots
    150150                                Double_t obsPt = trk->PT;
    151                                 histPtobs->Fill(obsPt);
    152151                                if (TMath::Abs(genCtg) < maxCtAcc)histPtobsC->Fill(obsPt); // pt for central tracks
    153                                 if (obsPt > minPtAcc)histCtobsH->Fill(obsCtg);                          // cot(theta) for high pt tracks
     152                                if (genPt > minPtAcc)histCtobsH->Fill(obsCtg);                          // cot(theta) for high pt tracks
    154153                        }               // End loop on tracks
    155154
     
    162161                                        GenParticle* gpart = (GenParticle*)branchGenPart->At(it);
    163162                                        //
    164                                         // Plot charged particle parameters 
     163                                        // Plot charged particle parameters
    165164                                        // Only final state particles (Status = 1)
    166165                                        if (gpart->Status == 1 && TMath::Abs(gpart->Charge) > 0) {
    167166                                                //
    168                                                 // Position of origin in meters
    169                                                 Double_t x = 1.0e-3 * gpart->X;
    170                                                 Double_t y = 1.0e-3 * gpart->Y;
    171                                                 Double_t z = 1.0e-3 * gpart->Z;
     167                                                // Position of origin
     168                                                Double_t x = gpart->X;
     169                                                Double_t y = gpart->Y;
     170                                                Double_t z = gpart->Z;
    172171                                                TVector3 xv(x, y, z);
    173172                                                //
     
    180179                                                // Original parameters
    181180                                                Double_t Q = gpart->Charge;
    182                                                 TVectorD gPar = TrkUtil::XPtoPar(xv, pv, Q, Bz);        // Get parameters from position and momentum
    183                                                 TVectorD genPar = TrkUtil::ParToMm(gPar);                       // Convert to mm
     181                                                TVectorD genPar = TrkUtil::XPtoPar(xv, pv, Q, Bz);      // Get parameters from position and momentum
    184182                                                // Unpack parameters
    185                                                 Double_t genD0  = genPar(0);
     183                                                Double_t genD0 = genPar(0);
    186184                                                Double_t genPhi = genPar(1);
    187                                                 Double_t genC   = genPar(2);
    188                                                 Double_t genZ0  = genPar(3);
     185                                                Double_t genC = genPar(2);
     186                                                Double_t genZ0 = genPar(3);
    189187                                                Double_t genCtg = genPar(4);
    190                                                 Double_t genPt  = pv.Pt();
    191188                                                // Fill histograms
    192                                                 histDgen ->Fill(genD0);
     189                                                histDgen->Fill(genD0);
    193190                                                histP0gen->Fill(genPhi);
    194                                                 histCgen ->Fill(genC);
     191                                                histCgen->Fill(genC);
    195192                                                histZ0gen->Fill(genZ0);
    196193                                                histCtgen->Fill(genCtg);
    197194                                                //
    198195                                                // Acceptance plots
    199                                                 histPtgen->Fill(genPt);
    200                                                 if (TMath::Abs(genCtg) < maxCtAcc)histPtgenC->Fill(genPt);
    201                                                 if (genPt > minPtAcc)histCtgenH->Fill(genCtg);
     196                                                if (TMath::Abs(genCtg) < maxCtAcc)histPtgenC->Fill(gpart->PT);
     197                                                if (gpart->PT > minPtAcc)histCtgenH->Fill(genCtg);
    202198                                        }
    203199                                }
     
    226222        TCanvas* Cnv2 = new TCanvas("Cnv2", "Delphes observed track pulls", 150, 150, 900, 500);
    227223        Cnv2->Divide(3, 2);
    228         Cnv2->cd(1); gPad->SetLogy(1);
    229         histDpull->Draw();
    230         Cnv2->cd(2); gPad->SetLogy(1);
    231         histP0pull->Draw();
    232         Cnv2->cd(3); gPad->SetLogy(1);
    233         histCpull->Draw();
    234         Cnv2->cd(4); gPad->SetLogy(1);
    235         histZ0pull->Draw();
    236         Cnv2->cd(5); gPad->SetLogy(1);
    237         histCtpull->Draw();
     224        Cnv2->cd(1); histDpull->Draw();
     225        Cnv2->cd(2); histP0pull->Draw();
     226        Cnv2->cd(3); histCpull->Draw();
     227        Cnv2->cd(4); histZ0pull->Draw();
     228        Cnv2->cd(5); histCtpull->Draw();
    238229        //
    239230        // Acceptance plots
    240231        //
    241         TCanvas* Cnv4 = new TCanvas("Cnv4", "Delphes acceptance", 200, 200, 500, 500);
     232        TCanvas* Cnv4 = new TCanvas("Cnv4", "Delphes acceptance", 350, 350, 500, 500);
    242233        Cnv4->Divide(2, 2);
    243234        Cnv4->cd(1);
    244235        histCtgen->Draw();
    245         histCtobs->SetLineColor(kRed);
    246236        histCtobs->Draw("SAME");
    247237        Cnv4->cd(2);
     
    256246        }
    257247        histAccCtg->Draw();
    258         Cnv4->cd(3); gPad->SetLogy(1);
     248        Cnv4->cd(3);
    259249        histPtgen->Draw();
    260         histPtobs->SetLineColor(kRed);
    261250        histPtobs->Draw("SAME");
    262251        Cnv4->cd(4);
     
    272261        histAccPt->Draw();
    273262        //
    274         TCanvas* Cnv5 = new TCanvas("Cnv5", "Delphes acceptance (constrained)", 250, 250, 500, 500);
     263        TCanvas* Cnv5 = new TCanvas("Cnv5", "Delphes acceptance (constrained)", 400, 400, 500, 500);
    275264        Cnv5->Divide(2, 2);
    276265        Cnv5->cd(1);
    277266        histCtgenH->Draw();
    278         histCtobsH->SetLineColor(kRed);
    279267        histCtobsH->Draw("SAME");
    280268        Cnv5->cd(2);
     
    289277        }
    290278        histAccCtgH->Draw();
    291         Cnv5->cd(3); gPad->SetLogy(1);
    292         histPtgenC->Draw();
    293         histPtobsC->SetLineColor(kRed);
     279        Cnv5->cd(3);
     280        histPtgenC->Draw();
    294281        histPtobsC->Draw("SAME");
    295282        Cnv5->cd(4);
  • external/TrackCovariance/TrkUtil.cc

    ra1a25d4 rd3165fa  
    11#include "TrkUtil.h"
    2 #include <iostream>
    32
    43// Constructor
     
    3231        Double_t cross = x(0) * p(1) - x(1) * p(0);
    3332        Double_t T = sqrt(pt * pt - 2 * a * cross + a * a * r2);
    34         Double_t phi0 = atan2((p(1) - a * x(0)) / T, (p(0) + a * x(1)) / T);    // Phi0
     33        Double_t phi0 = TMath::ATan2((p(1) - a * x(0)) / T, (p(0) + a * x(1)) / T);     // Phi0
    3534        Double_t D;                                                     // Impact parameter D
    3635        if (pt < 10.0) D = (T - pt) / a;
     
    4241        //Longitudinal parameters
    4342        Double_t B = C * sqrt(TMath::Max(r2 - D * D, 0.0) / (1 + 2 * C * D));
    44         Double_t st = asin(B) / C;
     43        Double_t st = TMath::ASin(B) / C;
    4544        Double_t ct = p(2) / pt;
    4645        Double_t z0 = x(2) - ct * st;
     
    6968        //
    7069        TVector3 Xval;
    71         Xval(0) = -D * sin(phi0);
    72         Xval(1) = D * cos(phi0);
     70        Xval(0) = -D * TMath::Sin(phi0);
     71        Xval(1) = D * TMath::Cos(phi0);
    7372        Xval(2) = z0;
    7473        //
     
    7776//
    7877TVector3 TrkUtil::ParToP(TVectorD Par)
    79 {
    80         if (fBz == 0.0)
    81 std::cout << "TrkUtil::ParToP: Warning Bz not set" << std::endl;
    82         //
    83         return ParToP(Par,fBz);
    84 }
    85 //
    86 TVector3 TrkUtil::ParToP(TVectorD Par, Double_t Bz)
    8778{
    8879        Double_t C = Par(2);
     
    9182        //
    9283        TVector3 Pval;
    93         Double_t pt = Bz * cSpeed() / TMath::Abs(2 * C);
    94         Pval(0) = pt * cos(phi0);
    95         Pval(1) = pt * sin(phi0);
     84        Double_t pt = fBz * cSpeed() / TMath::Abs(2 * C);
     85        Pval(0) = pt * TMath::Cos(phi0);
     86        Pval(1) = pt * TMath::Sin(phi0);
    9687        Pval(2) = pt * ct;
    9788        //
     
    112103        Double_t b = -cSpeed() * fBz / 2.;
    113104        pACTS(0) = 1000 * Par(0);               // D from m to mm
    114         pACTS(1) = 1000 * Par(3);               // z0 from m to mm
     105        pACTS(1) = 1000 * Par(3);       // z0 from m to mm
    115106        pACTS(2) = Par(1);                      // Phi0 is unchanged
    116         pACTS(3) = atan2(1.0, Par(4));          // Theta in [0, pi] range
     107        pACTS(3) = TMath::ATan2(1.0, Par(4));           // Theta in [0, pi] range
    117108        pACTS(4) = Par(2) / (b * sqrt(1 + Par(4) * Par(4)));            // q/p in GeV
    118109        pACTS(5) = 0.0;                         // Time: currently undefined
  • external/TrackCovariance/TrkUtil.h

    ra1a25d4 rd3165fa  
    2020        void SetBfield(Double_t Bz) { fBz = Bz; }
    2121        TVectorD XPtoPar(TVector3 x, TVector3 p, Double_t Q);
     22        TVector3 ParToX(TVectorD Par);
    2223        TVector3 ParToP(TVectorD Par);
     24        Double_t ParToQ(TVectorD Par);
    2325        //
    2426        // Conversion to ACTS parametrization
     
    4446        static Double_t cSpeed()
    4547        {
    46                 Double_t c = 2.99792458e8;      // speed of light m/sec
    47                 //return TMath::C()*1.0e-9;     // Incompatible with root5
    48                 return c*1.0e-9;                // Reduced speed of light       
     48                return TMath::C()*1.0e-9;       // Reduced speed of light
    4949        }
    5050        //
     
    5252        //
    5353        static TVectorD XPtoPar(TVector3 x, TVector3 p, Double_t Q, Double_t Bz);
    54         static TVector3 ParToX(TVectorD Par);                           // position of minimum distance from z axis
    55         static TVector3 ParToP(TVectorD Par, Double_t Bz);      // Get Momentum from track parameters
    56         static Double_t ParToQ(TVectorD Par);                           // Get track charge
    5754        //
    5855        // Conversion from meters to mm
Note: See TracChangeset for help on using the changeset viewer.