61 std::cout <<
"emptyTrackTest failed." << std::endl;
73 TFile* fOut =
new TFile(
FILENAME,
"RECREATE");
75 TTree* tResults =
new TTree(
"tResults",
"results from track fit");
76 tResults->Branch(
"gfTrack",
"genfit::Track", &fitTrack, 32000, -1);
77 tResults->Branch(
"stateFinal", &stateFinal);
78 tResults->Branch(
"covFinal", &covFinal, 32000, -1);
79 tResults->Branch(
"planeFinal", &planeFinal, 32000, -1);
92 new TGeoManager(
"Geometry",
"Geane geometry");
93 TGeoManager::Import(
"genfitGeom.root");
102 for (
unsigned int iEvent=0; iEvent<100; ++iEvent){
105 TVector3 pos(0, 0, 0);
106 TVector3 mom(1.,0,0);
107 mom.SetPhi(gRandom->Uniform(0.,2*TMath::Pi()));
108 mom.SetTheta(gRandom->Uniform(0.4*TMath::Pi(),0.6*TMath::Pi()));
109 mom.SetMag(gRandom->Uniform(0.2, 1.));
114 const double charge = TDatabasePDG::Instance()->GetParticle(pdg)->Charge()/(3.);
119 unsigned int nMeasurements = gRandom->Uniform(5, 15);
123 const bool smearPosMom =
true;
124 const double posSmear = 0.1;
125 const double momSmear = 3. /180.*TMath::Pi();
126 const double momMagSmear = 0.1;
131 posM.SetX(gRandom->Gaus(posM.X(),posSmear));
132 posM.SetY(gRandom->Gaus(posM.Y(),posSmear));
133 posM.SetZ(gRandom->Gaus(posM.Z(),posSmear));
135 momM.SetPhi(gRandom->Gaus(mom.Phi(),momSmear));
136 momM.SetTheta(gRandom->Gaus(mom.Theta(),momSmear));
137 momM.SetMag(gRandom->Gaus(mom.Mag(), momMagSmear*mom.Mag()));
141 double resolution = 0.01;
142 for (
int i = 0; i < 3; ++i)
143 covM(i,i) = resolution*resolution;
144 for (
int i = 3; i < 6; ++i)
145 covM(i,i) = pow(resolution / nMeasurements / sqrt(3), 2);
157 TVectorD seedState(6);
158 TMatrixDSym seedCov(6);
164 std::vector<genfit::eMeasurementType> measurementTypes;
165 for (
unsigned int i = 0; i < nMeasurements; ++i)
171 for (
unsigned int i=0; i<measurementTypes.size(); ++i){
172 std::vector<genfit::AbsMeasurement*> measurements = measurementCreator.
create(measurementTypes[i], i*5.);
177 tp->setScatterer(sc);
179 fitTrack->insertPoint(tp);
183 std::cerr<<
"Exception, next track"<<std::endl;
184 std::cerr << e.
what();
191 assert(fitTrack->checkConsistency());
194 fitter->processTrack(fitTrack);
197 assert(fitTrack->checkConsistency());
200 stateFinal.ResizeTo(fitTrack->getFittedState().getState());
201 stateFinal = fitTrack->getFittedState().getState();
202 covFinal.ResizeTo(fitTrack->getFittedState().getCov());
203 covFinal = fitTrack->getFittedState().getCov();
204 planeFinal = *(fitTrack->getFittedState().getPlane());
223 fOut = TFile::Open(
FILENAME,
"READ");
224 fOut->GetObject(
"tResults", tResults);
225 TVectorD* pState = 0;
226 tResults->SetBranchAddress(
"stateFinal", &pState);
227 TMatrixDSym* pMatrix = 0;
228 tResults->SetBranchAddress(
"covFinal", &pMatrix);
230 tResults->SetBranchAddress(
"planeFinal", &plane);
231 tResults->SetBranchAddress(
"gfTrack", &fitTrack);
233 for (Long_t nEntry = 0; nEntry < tResults->GetEntries(); ++nEntry) {
234 tResults->GetEntry(nEntry);
236 if (!fitTrack->checkConsistency()) {
237 std::cout <<
"stored track inconsistent" << std::endl;
241 if (*pState == fitTrack->getFittedState().getState() &&
242 *pMatrix == fitTrack->getFittedState().getCov() &&
243 *plane == *(fitTrack->getFittedState().getPlane())) {
247 std::cout <<
"stored track not equal" << std::endl;
249 fitTrack->getFittedState().getState().Print();
251 fitTrack->getFittedState().getCov().Print();
253 fitTrack->getFittedState().getPlane()->Print();
258 std::cout <<
"stored tracks are identical to fitted tracks, as far as tested." << std::endl;
260 std::cout <<
"deleteing didn't segfault" << std::endl;
virtual void get6DStateCov(const MeasuredStateOnPlane &state, TVectorD &stateVec, TMatrixDSym &cov) const
Translates MeasuredStateOnPlane into 6D state vector (x, y, z, p_x, p_y, p_z) and 6x6 covariance.