Fork me on GitHub

Changes in / [4564cba:54ec182] in git


Ignore:
Files:
11 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r4564cba r54ec182  
    464464        modules/ParticleDensity.h \
    465465        modules/TruthVertexFinder.h \
    466         modules/ExampleModule.h \
    467         modules/LLPFilter.h \
    468         modules/CscClusterEfficiency.h \
    469         modules/CscClusterId.h
     466        modules/ExampleModule.h
    470467tmp/modules/ModulesDict$(PcmSuf): \
    471468        tmp/modules/ModulesDict.$(SrcSuf)
     
    521518        classes/DelphesFactory.h \
    522519        classes/SortableObject.h
    523 tmp/classes/DelphesCscClusterFormula.$(ObjSuf): \
    524         classes/DelphesCscClusterFormula.$(SrcSuf) \
    525         classes/DelphesCscClusterFormula.h \
    526         classes/DelphesClasses.h
    527520tmp/classes/DelphesCylindricalFormula.$(ObjSuf): \
    528521        classes/DelphesCylindricalFormula.$(SrcSuf) \
     
    749742        external/ExRootAnalysis/ExRootFilter.h \
    750743        external/ExRootAnalysis/ExRootResult.h
    751 tmp/modules/CscClusterEfficiency.$(ObjSuf): \
    752         modules/CscClusterEfficiency.$(SrcSuf) \
    753         modules/CscClusterEfficiency.h \
    754         classes/DelphesClasses.h \
    755         classes/DelphesFactory.h \
    756         classes/DelphesCscClusterFormula.h \
    757         external/ExRootAnalysis/ExRootClassifier.h \
    758         external/ExRootAnalysis/ExRootFilter.h \
    759         external/ExRootAnalysis/ExRootResult.h
    760 tmp/modules/CscClusterId.$(ObjSuf): \
    761         modules/CscClusterId.$(SrcSuf) \
    762         modules/CscClusterId.h \
    763         classes/DelphesClasses.h \
    764         classes/DelphesFactory.h \
    765         classes/DelphesCscClusterFormula.h \
    766         external/ExRootAnalysis/ExRootClassifier.h \
    767         external/ExRootAnalysis/ExRootFilter.h \
    768         external/ExRootAnalysis/ExRootResult.h
    769744tmp/modules/DecayFilter.$(ObjSuf): \
    770745        modules/DecayFilter.$(SrcSuf) \
     
    907882        external/ExRootAnalysis/ExRootFilter.h \
    908883        external/ExRootAnalysis/ExRootResult.h
    909 tmp/modules/LLPFilter.$(ObjSuf): \
    910         modules/LLPFilter.$(SrcSuf) \
    911         modules/LLPFilter.h \
    912         classes/DelphesClasses.h \
    913         classes/DelphesFactory.h \
    914         classes/DelphesFormula.h \
    915         external/ExRootAnalysis/ExRootClassifier.h \
    916         external/ExRootAnalysis/ExRootFilter.h \
    917         external/ExRootAnalysis/ExRootResult.h
    918884tmp/modules/LeptonDressing.$(ObjSuf): \
    919885        modules/LeptonDressing.$(SrcSuf) \
     
    11971163DELPHES_OBJ +=  \
    11981164        tmp/classes/DelphesClasses.$(ObjSuf) \
    1199         tmp/classes/DelphesCscClusterFormula.$(ObjSuf) \
    12001165        tmp/classes/DelphesCylindricalFormula.$(ObjSuf) \
    12011166        tmp/classes/DelphesFactory.$(ObjSuf) \
     
    12621227        tmp/modules/ClusterCounting.$(ObjSuf) \
    12631228        tmp/modules/ConstituentFilter.$(ObjSuf) \
    1264         tmp/modules/CscClusterEfficiency.$(ObjSuf) \
    1265         tmp/modules/CscClusterId.$(ObjSuf) \
    12661229        tmp/modules/DecayFilter.$(ObjSuf) \
    12671230        tmp/modules/Delphes.$(ObjSuf) \
     
    12791242        tmp/modules/JetFlavorAssociation.$(ObjSuf) \
    12801243        tmp/modules/JetPileUpSubtractor.$(ObjSuf) \
    1281         tmp/modules/LLPFilter.$(ObjSuf) \
    12821244        tmp/modules/LeptonDressing.$(ObjSuf) \
    12831245        tmp/modules/Merger.$(ObjSuf) \
     
    19661928        @touch $@
    19671929
    1968 modules/LLPFilter.h: \
    1969         classes/DelphesModule.h
    1970         @touch $@
    1971 
    19721930external/fastjet/internal/MinHeap.hh: \
    19731931        external/fastjet/internal/base.hh
     
    22992257        @touch $@
    23002258
    2301 modules/CscClusterEfficiency.h: \
    2302         classes/DelphesModule.h
    2303         @touch $@
    2304 
    23052259external/fastjet/PseudoJetStructureBase.hh: \
    23062260        external/fastjet/internal/base.hh
     
    24272381external/fastjet/config.h: \
    24282382        external/fastjet/config_win.h
    2429         @touch $@
    2430 
    2431 modules/CscClusterId.h: \
    2432         classes/DelphesModule.h
    24332383        @touch $@
    24342384
  • classes/ClassesLinkDef.h

    r4564cba r54ec182  
    5757#pragma link C++ class Electron+;
    5858#pragma link C++ class Muon+;
    59 #pragma link C++ class CscCluster+;
    60 
    6159#pragma link C++ class Jet+;
    6260#pragma link C++ class Track+;
     
    6866
    6967#endif
     68
  • classes/DelphesClasses.cc

    r4564cba r54ec182  
    3535CompBase *Electron::fgCompare = CompPT<Electron>::Instance();
    3636CompBase *Muon::fgCompare = CompPT<Muon>::Instance();
    37 
    3837CompBase *Jet::fgCompare = CompPT<Jet>::Instance();
    3938CompBase *Track::fgCompare = CompPT<Track>::Instance();
     
    4342CompBase *Vertex::fgCompare = CompSumPT2<Vertex>::Instance();
    4443CompBase *Candidate::fgCompare = CompMomentumPt<Candidate>::Instance();
    45 CompBase *CscCluster::fgCompare = CompE<CscCluster>::Instance();
    4644
    4745//------------------------------------------------------------------------------
     
    220218  Position(0.0, 0.0, 0.0, 0.0),
    221219  InitialPosition(0.0, 0.0, 0.0, 0.0),
    222   DecayPosition(0.0, 0.0, 0.0, 0.0),
    223220  PositionError(0.0, 0.0, 0.0, 0.0),
    224221  Area(0.0, 0.0, 0.0, 0.0),
     
    233230  Phi(0), ErrorPhi(0),
    234231  Xd(0), Yd(0), Zd(0),
    235   XFirstHit(0), YFirstHit(0), ZFirstHit(0),
    236232  Nclusters(0.0),
    237233  dNdx(0.0),
     
    392388  object.Position = Position;
    393389  object.InitialPosition = InitialPosition;
    394   object.DecayPosition = DecayPosition;
    395390  object.PositionError = PositionError;
    396391  object.Area = Area;
     
    414409  object.Yd = Yd;
    415410  object.Zd = Zd;
    416   object.XFirstHit = XFirstHit;
    417   object.YFirstHit = YFirstHit;
    418   object.ZFirstHit = ZFirstHit;
    419411  object.Nclusters = Nclusters;
    420412  object.dNdx = dNdx;
     
    531523  Position.SetXYZT(0.0, 0.0, 0.0, 0.0);
    532524  InitialPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);
    533   DecayPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);
    534525  Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
    535526  TrackCovariance.Zero();
     
    553544  Yd = 0.0;
    554545  Zd = 0.0;
    555   XFirstHit = 0.0;
    556   YFirstHit = 0.0;
    557   ZFirstHit = 0.0;
    558546  Nclusters = 0.0;
    559547  dNdx = 0.0;
  • classes/DelphesClasses.h

    r4564cba r54ec182  
    158158  Float_t Z; // particle vertex position (z component) | hepevt.vhep[number][2]
    159159
    160   Float_t decayX;
    161   Float_t decayY;
    162   Float_t decayZ;
    163   Float_t decayT;
    164 
    165160  static CompBase *fgCompare; //!
    166161  const CompBase *GetCompare() const { return fgCompare; }
     
    462457  Float_t Yd; // Y coordinate of point of closest approach to vertex
    463458  Float_t Zd; // Z coordinate of point of closest approach to vertex
    464 
    465   Float_t XFirstHit; // X coordinate of point of closest approach to vertex
    466   Float_t YFirstHit; // Y coordinate of point of closest approach to vertex
    467   Float_t ZFirstHit; // Z coordinate of point of closest approach to vertex
    468459
    469460  Float_t L; // track path length
     
    574565  Float_t Zd; // Z coordinate of point of closest approach to vertex
    575566
    576   Float_t XFirstHit; // X coordinate of point of closest approach to vertex
    577   Float_t YFirstHit; // Y coordinate of point of closest approach to vertex
    578   Float_t ZFirstHit; // Z coordinate of point of closest approach to vertex
    579 
    580567  Float_t L; // track path length
    581568  Float_t D0; // track transverse impact parameter
     
    651638  ClassDef(HectorHit, 1)
    652639};
    653 //---------------------------------------------------------------------------
    654 
    655 class CscCluster: public SortableObject
    656 {
    657 public:
    658   Float_t Eta; // eta of LLP
    659   Float_t Phi; // phi of LLP
    660   Float_t PT; // pt of LLP
    661   Float_t Px;// px of LLP
    662   Float_t Py;// py of LLP
    663   Float_t Pz;// pz of LLP
    664   Float_t E; // E of LLP
    665   Float_t Ehad; // had energy of LLP
    666   Float_t Eem; // em energy of LLP
    667   Float_t pid; // LLP pid
    668   Float_t T; // LLP decay time-photon travel time
    669   Float_t X; // LLP decay x
    670   Float_t Y; //  LLP decay y
    671   Float_t Z; //  LLP decay z
    672   Float_t R; //  LLP decay z
    673   Float_t beta; // LLP beta
    674   Float_t ctau; //LLP ctau
    675 
    676 
    677   static CompBase *fgCompare; //!
    678   const CompBase *GetCompare() const { return fgCompare; }
    679 
    680   ClassDef(CscCluster, 5)
    681 };
    682640
    683641//---------------------------------------------------------------------------
     
    724682  Float_t DeltaPhi;
    725683
    726   TLorentzVector Momentum, Position, InitialPosition, PositionError, DecayPosition, Area;
     684  TLorentzVector Momentum, Position, InitialPosition, PositionError, Area;
    727685
    728686  Float_t L; // path length
     
    750708  Float_t Zd;
    751709
    752   Float_t XFirstHit;
    753   Float_t YFirstHit;
    754   Float_t ZFirstHit;
    755 
    756710  // tracking resolution
    757711
  • classes/DelphesHepMC2Reader.cc

    r4564cba r54ec182  
    438438{
    439439  Candidate *candidate;
    440   Candidate *candidateDaughter;
    441440  map<int, pair<int, int> >::iterator itMotherMap;
    442441  map<int, pair<int, int> >::iterator itDaughterMap;
     
    447446    candidate = static_cast<Candidate *>(allParticleOutputArray->At(i));
    448447
    449 
    450448    if(candidate->M1 > 0)
    451449    {
     
    479477        candidate->D1 = -1;
    480478        candidate->D2 = -1;
    481         const TLorentzVector &decayPosition = candidate->Position;
    482         candidate->DecayPosition.SetXYZT(decayPosition.X(), decayPosition.Y(), decayPosition.Z(), decayPosition.T());// decay position
    483      }
     479      }
    484480      else
    485481      {
    486482        candidate->D1 = itDaughterMap->second.first;
    487483        candidate->D2 = itDaughterMap->second.second;
    488         candidateDaughter = static_cast<Candidate *>(allParticleOutputArray->At(candidate->D1));
    489         const TLorentzVector &decayPosition = candidateDaughter->Position;
    490         candidate->DecayPosition.SetXYZT(decayPosition.X(), decayPosition.Y(), decayPosition.Z(), decayPosition.T());// decay position
    491        
    492 
    493       }
    494     }
    495   }
    496 }
    497 
    498 //---------------------------------------------------------------------------
     484      }
     485    }
     486  }
     487}
     488
     489//---------------------------------------------------------------------------
  • classes/DelphesHepMC3Reader.cc

    r4564cba r54ec182  
    458458  TObjArray *array;
    459459  Candidate *candidate;
    460   Candidate *candidateDaughter;
    461460  TParticlePDG *pdgParticle;
    462461  int pdgCode;
     
    574573        candidate->D1 = -1;
    575574        candidate->D2 = -1;
    576         const TLorentzVector &decayPosition = candidate->Position;
    577         candidate->DecayPosition.SetXYZT(decayPosition.X(), decayPosition.Y(), decayPosition.Z(), decayPosition.T());// decay position
    578575      }
    579576      else
     
    581578        candidate->D1 = itDaughterMap->second.first;
    582579        candidate->D2 = itDaughterMap->second.second;
    583         candidateDaughter = static_cast<Candidate *>(allParticleOutputArray->At(candidate->D1));
    584         const TLorentzVector &decayPosition = candidateDaughter->Position;
    585         candidate->DecayPosition.SetXYZT(decayPosition.X(), decayPosition.Y(), decayPosition.Z(), decayPosition.T());// decay position
    586       }
    587     }
    588   }
    589 }
    590 
    591 //---------------------------------------------------------------------------
     580      }
     581    }
     582  }
     583}
     584
     585//---------------------------------------------------------------------------
  • examples/ExamplePVtxFind.C

    r4564cba r54ec182  
    4545        TH1D* hTrFoundB = new TH1D("hTrFoundB", "Found BAD  primary tracks", 41, -0.5, 40.5);
    4646        TH1D* hTrDiff = new TH1D("hTrDiff", "Found - available tracks", 21, -10.5, 10.5);
    47         // Chi2 for cuts
    48         TH1D* hChi2SngP = new TH1D("hChi2SngP", "#chi^2 for single tracks", 200, 0., 50.);
    49         TH1D* hChi2MaxP = new TH1D("hChi2MaxP", "#chi^2 max contribution", 200, 0., 50.);
    50         TH1D* hChi2SngN = new TH1D("hChi2SngN", "#chi^2 for single tracks", 200, 0., 50.);
    51         TH1D* hChi2MaxN = new TH1D("hChi2MaxN", "#chi^2 max contribution", 200, 0., 50.);
    52        
    53        
    5447        //
    5548        // Loop over all events
     
    6053                treeReader->ReadEntry(entry);
    6154                Int_t NtrG = branchTrack->GetEntries();
    62                 TVectorD** pr = new TVectorD * [NtrG];          // Track Parameters
    63                 TMatrixDSym** cv = new TMatrixDSym * [NtrG];    // Track covariances
    64                 Bool_t *fprvx = new Bool_t[NtrG];               // Primary vertex flag
     55                if(entry%500 ==0)std::cout << "Event "<<entry<<" opened containing " << NtrG << " tracks" << std::endl;
     56                TVectorD** pr = new TVectorD * [NtrG];
     57                TMatrixDSym** cv = new TMatrixDSym * [NtrG];
    6558                //
    6659                // test Particle branch
     
    9588                                pr[it] = new TVectorD(obsPar);
    9689                                cv[it] = new TMatrixDSym(trk->CovarianceMatrix());
     90                                // Check covariance
     91                                /*
     92                                TMatrixDSymEigen Eign(*cv[it]);
     93                                TVectorD lambda = Eign.GetEigenValues();
     94                                Bool_t good = kTRUE;
     95                                for(Int_t i=0; i<5; i++) if(lambda(i)<0.0) good = kFALSE;
     96                                if(!good){
     97                                        std::cout<<"Cov["<<it<<"]"<<" eigenvalues: "
     98                                        <<lambda(0)<<", "<<lambda(1)<<", "<<lambda(2)<<", "
     99                                        <<lambda(3)<<", "<<lambda(4)<<std::endl;
     100                                        TMatrixDSym Ctmp = *cv[it];
     101                                        std::cout<<"Error D (dir - cov) "<<trk->ErrorD0
     102                                        <<" - "<<TMath::Sqrt(Ctmp(0,0))<<std::endl;
     103                                }
     104                                */
     105                                //std::cout << "Track loaded it= " << it << std::endl;
    97106                        //
    98107                        // Find true primary vertex
     
    105114                                Double_t z = gp->Z;
    106115                                Bool_t prim = kTRUE;    // Is primary?
    107                                 fprvx[it] = kFALSE;
    108116                                Int_t mp = gp->M1;      // Mother
    109117                                while (mp > 0) {
     
    121129                                if (prim) {             // It's a primary track
    122130                                        Nprim++;
    123                                         fprvx[it] = kTRUE;
    124131                                        xpv = x;        // Store true primary
    125132                                        ypv = y;
     
    129136                        }               // End loop on tracks
    130137                }
    131                 if(entry%500 ==0){
    132                   std::cout << "Event "<<entry<<" opened containing " << NtrG << " / "<< Nprim
    133                   << "   Total / primary tracks"<< std::endl;
    134                 }
    135                 //std::cout<<"PVtxFind true vertex: Nprim= "<<Nprim<<", x,y,z= "<<xpv<<", "<<ypv<<", "<<zpv<<std::endl;
     138                std::cout<<"PVtxFind true vertex: Nprim= "<<Nprim<<", x,y,z= "<<xpv<<", "<<ypv<<", "<<zpv<<std::endl;
    136139                //
    137140                // Find primary vertex
     
    158161                TVectorD** PrSk = new TVectorD * [1];
    159162                TMatrixDSym** CvSk = new TMatrixDSym * [1];
    160                 Double_t MaxChi2 = 9.;
     163                Double_t MaxChi2 = 2.0+3*2.;
    161164                for (Int_t n = 0; n < NtrG; n++) {
    162165                        PrSk[0] = new TVectorD(*pr[n]);
     
    166169                        Double_t Chi2One = Vskim->GetVtxChi2();
    167170                        //std::cout<<"Track "<<n<<", Chi2 = "<<Chi2One<<std::endl;
    168                         if(fprvx[n])hChi2SngP->Fill(Chi2One);
    169                         else hChi2SngN->Fill(Chi2One);
    170                         //
    171171                        if (Chi2One < MaxChi2) {
    172172                                nSkimmed[nSkim] = n;
     
    184184                // Load tracks for primary fit
    185185                Int_t MinTrk = 1;       // Minumum # tracks for vertex fit
    186                 std::vector<Int_t> trnum;
    187186                if (nSkim >= MinTrk) {
    188187                        TVectorD** PrFit = new TVectorD * [nSkim];
     
    191190                                PrFit[n] = new TVectorD(*pr[nSkimmed[n]]);
    192191                                CvFit[n] = new TMatrixDSym(*cv[nSkimmed[n]]);
    193                                 trnum.push_back(nSkimmed[n]);
    194192                        }
    195193                        delete[] nSkimmed;
     
    202200                        //
    203201                        // Remove tracks with large chi2
    204                         Double_t MaxChi2Fit = 8.0;
     202                        Double_t MaxChi2Fit = 4.5;
    205203                        Bool_t Done = kFALSE;
    206204                        while (!Done) {
     
    215213                                Double_t Chi2Mx = Chi2L[iMax];
    216214                                //std::cout << "Chi2Mx "<<Chi2Mx << std::endl;
    217                                 if(fprvx[trnum[iMax]])hChi2MaxP->Fill(Chi2Mx);
    218                                 else hChi2MaxN->Fill(Chi2Mx);
    219215                                if (Chi2Mx > MaxChi2Fit && Nfound > 1) {
    220216                                        //std::cout << "Before remove.  Nfound = "<<Nfound << std::endl;
    221217                                        Vtx->RemoveTrk(iMax);
    222                                         trnum.erase(trnum.begin() + iMax);
    223218                                        //std::cout << "After remove." << std::endl;
    224219                                        Nfound--;
     
    235230                        if (Nfound >= Nmin) {
    236231                                TVectorD xvtx = Vtx->GetVtx();
    237                                 //std::cout << "Found vertex " << xvtx(0)<<", "<<xvtx(1)<<", "<<xvtx(2) << std::endl;
     232                                std::cout << "Found vertex " << xvtx(0)<<", "<<xvtx(1)<<", "<<xvtx(2) << std::endl;
    238233                                TMatrixDSym covX = Vtx->GetVtxCov();
    239234                                Double_t Chi2 = Vtx->GetVtxChi2();
     
    261256                        delete[] PrFit;
    262257                        delete[] CvFit;
    263                         delete[] fprvx;
    264                         trnum.clear();
    265258                }
    266259
     
    278271        TCanvas* Cnv = new TCanvas("Cnv", "Delphes primary vertex pulls", 50, 50, 900, 500);
    279272        Cnv->Divide(2, 2);
    280         Cnv->cd(1); gPad->SetLogy(1); gStyle->SetOptFit(1111); gStyle->SetOptStat(111111);
     273        Cnv->cd(1); gPad->SetLogy(1); gStyle->SetOptFit(1111);
    281274        hXpull->Fit("gaus"); hXpull->Draw();
    282         Cnv->cd(2); gPad->SetLogy(1); gStyle->SetOptFit(1111); gStyle->SetOptStat(111111);
     275        Cnv->cd(2); gPad->SetLogy(1); gStyle->SetOptFit(1111);
    283276        hYpull->Fit("gaus"); hYpull->Draw();
    284         Cnv->cd(3); gPad->SetLogy(1); gStyle->SetOptFit(1111); gStyle->SetOptStat(111111);
     277        Cnv->cd(3); gPad->SetLogy(1); gStyle->SetOptFit(1111);
    285278        hZpull->Fit("gaus"); hZpull->Draw();
    286279        Cnv->cd(4); hChi2->Draw();
     
    295288        CnvN->cd(3);
    296289        hTrDiff->Draw();
    297         //
    298         TCanvas* CnvCh = new TCanvas("CnvCh", "#chi^2", 200, 200, 900, 500);
    299         CnvCh->Divide(2,1);
    300         CnvCh->cd(1);
    301         hChi2SngP->Draw();
    302         hChi2SngN->SetLineColor(kRed);
    303         hChi2SngN->Draw("SAME");
    304         CnvCh->cd(2);
    305         hChi2MaxP->Draw();
    306         hChi2MaxN->SetLineColor(kRed);
    307         hChi2MaxN->Draw("SAME");
    308290}
  • external/TrackCovariance/ObsTrk.cc

    r4564cba r54ec182  
    7474        fCovILC.ResizeTo(5, 5);
    7575        fGenPar = XPtoPar(fGenX, fGenP, Q);
    76         fGenParMm = ParToMm(fGenPar);
    7776        fGenParACTS = ParToACTS(fGenPar);
    7877        fGenParILC = ParToILC(fGenPar);
    7978        //
    8079        fObsPar = GenToObsPar(fGenPar);
    81         fObsParMm = ParToMm(fObsPar);
    8280        fObsParACTS = ParToACTS(fObsPar);
    8381        fObsParILC = ParToILC(fObsPar);
     
    8583        fObsP = ParToP(fObsPar);
    8684        fObsQ = ParToQ(fObsPar);
    87         fCovMm = CovToMm(fCov);
    8885        fCovACTS = CovToACTS(fObsPar, fCov);
    8986        fCovILC = CovToILC(fCov);
     
    120117        //if (pt > maxPt) std::cout << "Warning ObsTrk::GenToObsPar: pt " << pt << " is above grid range of " << maxPt << std::endl;
    121118        Double_t minAn = fGC->GetMinAng();
    122         //if (angd < minAn) std::cout << "Warning ObsTrk::GenToObsPar: angle " << angd
     119        //if (angd < minAn) std::cout << "Warning ObsTrk::GenToObsPar: angle " << angd 
    123120        //      << " is below grid range of " << minAn << std::endl;
    124121        Double_t maxAn = fGC->GetMaxAng();
     
    134131        Double_t ZinNeg = fG->GetZminNeg();
    135132        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         fXfirst = TVector3(Xfirst, Yfirst, Zfirst);
    140   //std::cout<<"obs trk: "<<Xfirst<<","<<Yfirst<<","<<Zfirst<<std::endl;
    141 
    142133        if (inside)
    143134        {
     
    153144                //std::cout<<"ObsTrk:: outside: x= "<<fGenX(0)<<", y= "<<fGenX(1)
    154145                //                         <<", z= "<<fGenX(2)<<std::endl;
     146                SolTrack* trk = new SolTrack(fGenX, fGenP, fG);
    155147                Bool_t Res = kTRUE; Bool_t MS = kTRUE;
    156148                trk->CovCalc(Res, MS);                                  // Calculate covariance matrix
    157                 Cov = trk->Cov();
    158         }                                       // Track covariance
    159         delete trk;
     149                Cov = trk->Cov();                                       // Track covariance
     150                delete trk;
     151        }
    160152        //
    161153        fCov = Cov;
  • external/TrackCovariance/ObsTrk.h

    r4564cba r54ec182  
    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
    4948        //
    5049        // Service routines
     
    9089        TMatrixDSym GetCovMm()  { return fCov; }        // in mm
    9190        TMatrixDSym GetCovACTS(){ return fCovACTS; }
    92         TMatrixDSym GetCovILC() { return fCovILC; }
    93         // First hit
    94         TVector3 GetFirstHit()  { return fXfirst; }
     91        TMatrixDSym GetCovILC(){ return fCovILC; }
     92        //
    9593};
    9694
  • external/TrackCovariance/SolTrack.cc

    r4564cba r54ec182  
    176176{
    177177        //
    178         // Return lists of hits associated to a track including all scattering layers.
     178        // Return lists of hits associated to a track including all scattering layers. 
    179179        // Return value is the total number of measurement hits
    180180        // kmh = total number of measurement layers hit for given type
     
    190190        {
    191191                Double_t R; Double_t phi; Double_t zz;
    192                 if (HitLayer(i, R, phi, zz))
     192                if (HitLayer(i, R, phi, zz)) 
    193193                {
    194194                        zhh[kh] = zz;
     
    207207{
    208208        //
    209         // Return lists of hits associated to a track for all measurement layers.
     209        // Return lists of hits associated to a track for all measurement layers. 
    210210        // Return value is the total number of measurement hits
    211211        // kmh = total number of measurement layers hit for given type
     
    234234}
    235235//
    236 Int_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
    276 }
    277 //
    278236// Track plot
    279237//
     
    327285        //
    328286        //
    329         // Input flags:
     287        // Input flags: 
    330288        //                              Res = .TRUE. turn on resolution effects/Use standard resolutions
    331289        //                                        .FALSE. set all resolutions to 0
     
    410368                        nz = 1.0;
    411369                }
    412                 Double_t corr = TMath::Abs(pxi*nx + pyi * ny + pzi * nz) / p();
     370                Double_t corr = TMath::Abs(pxi*nx + pyi * ny + pzi * nz) / p(); 
    413371                Double_t Rlf = fG->lTh(i) / (corr*fG->lX0(i));                                  // Rad. length fraction
    414372                thms[ii] = 0.0136*TMath::Sqrt(Rlf)*(1.0 + 0.038*TMath::Log(Rlf)) / p();         // MS angle
     
    438396                Int_t ityp  = fG->lTyp(i);                      // Layer type Barrel or Z
    439397                Int_t nmeai = fG->lND(i);                       // # measurements in layer
    440 
     398               
    441399                if (fG->isMeasure(i))
    442400                {
     
    470428                                                Rm(im, 2) = csa * dRphi(2) - ssa * dRz(2);      // C derivative
    471429                                                Rm(im, 3) = csa * dRphi(3) - ssa * dRz(3);      // z0 derivative
    472                                                 Rm(im, 4) = csa * dRphi(4) - ssa * dRz(4);      // cot(theta) derivative
     430                                                Rm(im, 4) = csa * dRphi(4) - ssa * dRz(4);      // cot(theta) derivative       
    473431                                        }
    474432                                        if (ityp == 2)          // Z type layer (Measure R-phi at const. Z)
     
    531489                                                {
    532490                                                        Double_t strk = 0;
    533                                                         if (nmk + 1 == 1) strk = fG->lStU(k);   // Stereo angle upper
     491                                                        if (nmk + 1 == 1) strk = fG->lStU(k);   // Stereo angle upper 
    534492                                                        if (nmk + 1 == 2) strk = fG->lStL(k);   // Stereo angle lower
    535493                                                        //if (im == km && Res) Sm(im, km) += sig*sig;   // Detector resolution on diagonal
     
    542500                                                        //
    543501                                                        // Loop on all layers below for MS contributions
    544                                                         for (Int_t jj = 0; jj < kk; jj++)
     502                                                        for (Int_t jj = 0; jj < kk; jj++)               
    545503                                                        {
    546504                                                                Double_t di = dik(ii, jj);
  • external/TrackCovariance/SolTrack.h

    r4564cba r54ec182  
    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
    7675        //
    7776        // Track graph
  • external/TrackCovariance/VertexFit.cc

    r4564cba r54ec182  
    1717{
    1818        fNtr = 0;
    19         fRstart = -1.0;
     19        fRold = -1.0;
    2020        fVtxDone = kFALSE;
    2121        fVtxCst = kFALSE;
     
    3131{
    3232        fNtr = Ntr;
    33         fRstart = -1.0;
     33        fRold = -1.0;
    3434        fVtxDone = kFALSE;
    3535        fVtxCst = kFALSE;
     
    5555{
    5656        fNtr = Ntr;
    57         fRstart = -1.0;
     57        fRold = -1.0;
    5858        fVtxDone = kFALSE;
    5959        fVtxCst = kFALSE;
     
    220220        std::vector<TVectorD*> x0i;                             // Tracks at ma
    221221        std::vector<TVectorD*> ni;                              // Track derivative wrt phase
    222         std::vector<TMatrixDSym*> Ci;                           // Position error matrix at fixed phase
     222        std::vector<TMatrixDSym*> Ci;                   // Position error matrix at fixed phase
    223223        std::vector<TVectorD*> wi;                              // Ci*ni
    224         std::vector<Double_t> s_in;                             // Starting phase
    225         //
    226         //
    227224        //
    228225        // Track loop
    229226        for (Int_t i = 0; i < fNtr; i++)
    230227        {
     228                Double_t s = 0.;
    231229                TVectorD par = *fPar[i];
    232230                TMatrixDSym Cov = *fCov[i];
    233                 Double_t s = 0.;
    234                 // Case when starting radius is provided
    235                 if(fRstart > TMath::Abs(par(0))){
    236                         s = 2.*TMath::ASin(par(2)*TMath::Sqrt((fRstart*fRstart-par(0)*par(0))/(1.+2.*par(2)*par(0))));
    237                 }
    238                 //
    239                 x0i.push_back(new TVectorD(Fill_x(par, s)));
     231                x0i.push_back(new TVectorD(Fill_x0(par)));
    240232                ni.push_back(new TVectorD(derXds(par, s)));
    241233                TMatrixD A = derXdPar(par, s);
     
    243235                TMatrixDSym Cinv = RegInv(*Ci[i]);
    244236                wi.push_back(new TVectorD(Cinv * (*ni[i])));
    245                 s_in.push_back(s);
    246237        }
    247238        //std::cout << "Vtx init completed. fNtr = "<<fNtr << std::endl;
     
    271262        for (Int_t i = 0; i < fNtr; i++){
    272263                Double_t si = Dot(*wi[i], fXv - (*x0i[i])) / Ci[i]->Similarity(*wi[i]);
    273                 ffi.push_back(si+s_in[i]);
     264                ffi.push_back(si);
    274265                //TVectorD xvi = Fill_x(*fPar[i],si);
    275266                //std::cout << "Fast vertex "<<i<<": xvi = "<<xvi(0)<<", "<<xvi(1)<<", "<<xvi(2)
     
    289280        Ci.clear();
    290281        wi.clear();
    291         s_in.clear();
    292282}
    293283//
     
    412402        //
    413403        fVtxDone = kTRUE;               // Set fit completion flag
    414         //fRstart = TMath::Sqrt(fXv(0)*fXv(0) + fXv(1)*fXv(1)); // Store fit
     404        fRold = TMath::Sqrt(fXv(0)*fXv(0) + fXv(1)*fXv(1));     // Store fit
    415405        //std::cout << "Found vertex " << fXv(0) << ", " << fXv(1) << ", " << fXv(2)
    416406        //      << ", after "<<Ntry<<" iterations"<<std::endl;
  • external/TrackCovariance/VertexFit.h

    r4564cba r54ec182  
    3636        // Results
    3737        Bool_t fVtxDone;                        // Flag vertex fit completed
    38         Double_t fRstart;                       // Starting value of vertex radius (0 = none)
     38        Double_t fRold;                         // Current value of vertex radius
    3939        TVectorD fXv;                           // Found vertex
    4040        TMatrixDSym fcovXv;                     // Vertex covariance
     
    8383        // Handle tracks/constraints
    8484        void AddVtxConstraint(TVectorD xv, TMatrixDSym cov);    // Add gaussian vertex constraint
    85         void AddTrk(TVectorD *par, TMatrixDSym *Cov);           // Add track to input list
    86         void RemoveTrk(Int_t iTrk);                             // Remove iTrk track
    87         void SetStartR(Double_t R) { fRstart = R; };            // Set starting radius
     85        void AddTrk(TVectorD *par, TMatrixDSym *Cov);                           // Add track to input list
     86        void RemoveTrk(Int_t iTrk);                                                             // Remove iTrk track
    8887        //
    8988};
  • modules/ModulesLinkDef.h

    r4564cba r54ec182  
    7979#include "modules/TruthVertexFinder.h"
    8080#include "modules/ExampleModule.h"
    81 #include "modules/LLPFilter.h"
    82 #include "modules/CscClusterEfficiency.h"
    83 #include "modules/CscClusterId.h"
    8481
    8582#ifdef __CINT__
     
    142139#pragma link C++ class TruthVertexFinder+;
    143140#pragma link C++ class ExampleModule+;
    144 #pragma link C++ class LLPFilter+;
    145 #pragma link C++ class CscClusterEfficiency+;
    146 #pragma link C++ class CscClusterId+;
    147141
    148142#endif
  • modules/TrackCovariance.cc

    r4564cba r54ec182  
    121121    const TLorentzVector &candidateMomentum = particle->Momentum;
    122122
    123 
    124123    Bool_t inside = TrkUtil::IsInside(candidatePosition.Vect(), Rin, ZinNeg, ZinPos); // Check if in inner box
    125124    Bool_t Accept = kTRUE;
     
    131130
    132131    ObsTrk track(candidatePosition.Vect(), candidateMomentum.Vect(), candidate->Charge, fCovariance, fGeometry);
    133 
    134132
    135133    mother    = candidate;
     
    152150    candidate->Yd = track.GetObsX().Y()*1e03;
    153151    candidate->Zd = track.GetObsX().Z()*1e03;
    154 
    155     candidate->XFirstHit = track.GetFirstHit().X()*1e03;
    156     candidate->YFirstHit = track.GetFirstHit().Y()*1e03;
    157     candidate->ZFirstHit = track.GetFirstHit().Z()*1e03;
    158152
    159153    candidate->D0       = track.GetObsPar()[0]*1e03;
  • modules/TreeWriter.cc

    r4564cba r54ec182  
    4545#include "TString.h"
    4646
    47 #include <set>
    4847#include <algorithm>
    4948#include <iostream>
     
    7776  fClassMap[Electron::Class()] = &TreeWriter::ProcessElectrons;
    7877  fClassMap[Muon::Class()] = &TreeWriter::ProcessMuons;
    79   fClassMap[CscCluster::Class()] = &TreeWriter::ProcessCscCluster;
    8078  fClassMap[Jet::Class()] = &TreeWriter::ProcessJets;
    8179  fClassMap[MissingET::Class()] = &TreeWriter::ProcessMissingET;
     
    151149{
    152150  TIter it1(candidate->GetCandidates());
    153   set<Candidate *> s;
    154   set<Candidate *>::iterator it3;
    155151  it1.Reset();
    156   s.clear();
    157152  array->Clear();
    158153
     
    164159    if(candidate->GetCandidates()->GetEntriesFast() == 0)
    165160    {
    166       s.insert(candidate);
     161      array->Add(candidate);
    167162      continue;
    168163    }
     
    172167    if(candidate->GetCandidates()->GetEntriesFast() == 0)
    173168    {
    174       s.insert(candidate);
     169      array->Add(candidate);
    175170      continue;
    176171    }
     
    180175    while((candidate = static_cast<Candidate *>(it2.Next())))
    181176    {
    182       candidate = static_cast<Candidate *>(candidate->GetCandidates()->At(0));
    183       if(candidate->GetCandidates()->GetEntriesFast() == 0)
    184       {
    185         s.insert(candidate);
    186       }
     177      array->Add(candidate->GetCandidates()->At(0));
    187178    }
    188   }
    189 
    190   for(it3 = s.begin(); it3 != s.end(); ++it3)
    191   {
    192     array->Add(*it3);
    193179  }
    194180}
     
    252238    entry->Z = position.Z();
    253239    entry->T = position.T() * 1.0E-3 / c_light;
    254 
    255240  }
    256241}
     
    399384    entry->Zd = candidate->Zd;
    400385
    401     entry->XFirstHit = candidate->XFirstHit;
    402     entry->YFirstHit = candidate->YFirstHit;
    403     entry->ZFirstHit = candidate->ZFirstHit;
    404 
    405386    const TLorentzVector &momentum = candidate->Momentum;
    406387
     
    563544    entry->Zd = candidate->Zd;
    564545
    565     entry->XFirstHit = candidate->XFirstHit;
    566     entry->YFirstHit = candidate->YFirstHit;
    567     entry->ZFirstHit = candidate->ZFirstHit;
    568 
    569546    const TLorentzVector &momentum = candidate->Momentum;
    570547
     
    909886  }
    910887}
    911 //------------------------------------------------------------------------------
    912 
    913 void TreeWriter::ProcessCscCluster(ExRootTreeBranch *branch, TObjArray *array)
    914 {
    915   TIter iterator(array);
    916   Candidate *candidate = 0;
    917   CscCluster *entry = 0;
    918   Double_t pt, signPz, cosTheta, eta, rapidity;
    919 
    920   const Double_t c_light = 2.99792458E8; // in unit of m/s
    921 
    922   array->Sort();
    923 
    924 
    925   // loop over all clusters
    926   iterator.Reset();
    927   while((candidate = static_cast<Candidate *>(iterator.Next())))
    928   {
    929     const TLorentzVector &momentum = candidate->Momentum;
    930     const TLorentzVector &position = candidate->DecayPosition;
    931 
    932     pt = momentum.Pt();
    933     cosTheta = TMath::Abs(momentum.CosTheta());
    934     signPz = (momentum.Pz() >= 0.0) ? 1.0 : -1.0;
    935     eta = (cosTheta == 1.0 ? signPz * 999.9 : momentum.Eta());
    936 
    937     entry = static_cast<CscCluster *>(branch->NewEntry());
    938 
    939     entry->SetBit(kIsReferenced);
    940     entry->SetUniqueID(candidate->GetUniqueID());
    941 
    942     entry->Eta = eta;
    943     entry->Phi = momentum.Phi();
    944 
    945     entry->PT = momentum.Pt(); // pt of LLP
    946     entry->Px = momentum.Px();// px of LLP
    947     entry->Py = momentum.Py();// py of LLP
    948     entry->Pz = momentum.Pz();// pz of LLP
    949     entry->E = momentum.E(); // E of LLP
    950     entry->pid = candidate->PID; // LLP pid
    951     entry->Eem = candidate->Eem; // LLP Eem
    952     entry->Ehad = candidate->Ehad; // LLP Ehad
    953     Double_t beta = momentum.P()/momentum.E();
    954     Double_t gamma = 1.0/sqrt(1-beta*beta);
    955     Double_t decayDistance = sqrt(pow(position.X(),2)+pow(position.Y(),2)+pow(position.Z(),2)); // mm
    956     entry->beta = beta; // LLP pid
    957     entry->ctau = decayDistance/(beta * gamma); // LLP travel time in its rest frame
    958     entry->T = decayDistance*(1./beta-1)* 1.0E-3/c_light*1e9; // ns
    959     entry->X = position.X(); // LLP decay x
    960     entry->Y = position.Y(); //  LLP decay y
    961     entry->Z = position.Z(); //  LLP decay z
    962   }
    963 }
    964888
    965889//------------------------------------------------------------------------------
  • modules/TreeWriter.h

    r4564cba r54ec182  
    6060  void ProcessElectrons(ExRootTreeBranch *branch, TObjArray *array);
    6161  void ProcessMuons(ExRootTreeBranch *branch, TObjArray *array);
    62   void ProcessCscCluster(ExRootTreeBranch *branch, TObjArray *array);
    6362  void ProcessTauJets(ExRootTreeBranch *branch, TObjArray *array);
    6463  void ProcessJets(ExRootTreeBranch *branch, TObjArray *array);
     
    6867  void ProcessWeight(ExRootTreeBranch *branch, TObjArray *array);
    6968  void ProcessHectorHit(ExRootTreeBranch *branch, TObjArray *array);
    70 
    7169
    7270#if !defined(__CINT__) && !defined(__CLING__)
Note: See TracChangeset for help on using the changeset viewer.