29 #include "FairRootManager.h"
30 #include "FairRuntimeDb.h"
31 #include "FairRunAna.h"
32 #include "TClonesArray.h"
53 #include "TLorentzVector.h"
55 #include "FairTrackParH.h"
60 #include "RKTrackRep.h"
63 #include "FairGeanePro.h"
69 fMvdBranchName(
""), fCentralTrackerBranchName(
""),
70 fUseGeane(kTRUE), fPropagateToIP(kTRUE), fPerpPlane(kFALSE), fNumIt(1),
fVerbose(0)
78 FairRootManager* ioman= FairRootManager::Instance();
81 Error(
"PndRecoDafFit2::Init",
"RootManager not instantiated!");
86 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
88 TClonesArray *tubeArray = NULL;
98 TClonesArray* stripar; TClonesArray* pixelar;
101 stripar=(TClonesArray*) ioman->GetObject(
"MVDHitsStripMix");
105 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"MVDHitsStripMix array found" << std::endl;
108 pixelar=(TClonesArray*) ioman->GetObject(
"MVDHitsPixelMix");
112 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"MVDHitsPixelMix array found" << std::endl;
117 stripar=(TClonesArray*) ioman->GetObject(
"MVDHitsStrip");
121 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"MVDHitsStrip array found" << std::endl;
124 pixelar=(TClonesArray*) ioman->GetObject(
"MVDHitsPixel");
128 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"MVDHitsPixel array found" << std::endl;
136 sthit=(TClonesArray*) ioman->GetObject(
"STTHitMix");
140 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"STTHitMix array found" << std::endl;
145 sthit=(TClonesArray*) ioman->GetObject(
"STTHit");
149 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"SttHit array found" << std::endl;
153 TClonesArray* gemar=(TClonesArray*) ioman->GetObject(
"GEMHit");
157 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"GEMHit array found" << std::endl;
160 TClonesArray* mdtar=(TClonesArray*) ioman->GetObject(
"MdtHit");
164 std::cout <<
"*** PndRecoDafFit2::Init" <<
"\t" <<
"MdtHit array found" << std::endl;
169 fPro =
new FairGeanePro();
173 Error(
"PndRecoDafFit2::Init",
"Only GEANE Propagation available!!!");
181 std::cout <<
"===PndRecoDafFit2::Init() finished ===================================================" << std::endl;
192 if (
fVerbose>0) std::cout<<
"PndRecoDafFit2::Fit"<<std::endl;
205 TMatrixDSym covSeed(6);
219 FairTrackParH *helix =
new FairTrackParH(&par, ierr);
220 FairGeanePro *fPro0 =
new FairGeanePro();
221 FairTrackParH *fRes=
new FairTrackParH();
222 fPro0->SetPoint(TVector3(0,0,0));
223 fPro0->PropagateToPCA(1, -1);
224 Bool_t rc = fPro0->Propagate(helix, fRes, PDGCode);
227 StartPos.SetXYZ(fRes->GetX(), fRes->GetY(), fRes->GetZ());
228 StartMom.SetXYZ(fRes->GetPx(), fRes->GetPy(), fRes->GetPz());
230 covSeed(0,0) = fRes->GetDX()*fRes->GetDX();
231 covSeed(1,1) = fRes->GetDY()*fRes->GetDY();
232 covSeed(2,2) = fRes->GetDZ()*fRes->GetDZ();
234 covSeed(3,3) = fRes->GetDPx()*fRes->GetDPx();
235 covSeed(4,4) = fRes->GetDPy()*fRes->GetDPy();
236 covSeed(5,5) = fRes->GetDPz()*fRes->GetDPz();
244 FairTrackParH *helix =
new FairTrackParH(&par, ierr);
245 FairGeanePro *fPro0 =
new FairGeanePro();
246 if (
fVerbose==0) fPro0->SetPrintErrors(kFALSE);
247 FairTrackParH *fRes=
new FairTrackParH();
249 Bool_t rc = fPro0->Propagate(helix, fRes, PDGCode);
252 StartPos.SetXYZ(fRes->GetX(), fRes->GetY(), fRes->GetZ());
253 StartMom.SetXYZ(fRes->GetPx(), fRes->GetPy(), fRes->GetPz());
255 covSeed(0,0) = fRes->GetDX()*fRes->GetDX();
256 covSeed(1,1) = fRes->GetDY()*fRes->GetDY();
257 covSeed(2,2) = fRes->GetDZ()*fRes->GetDZ();
259 covSeed(3,3) = fRes->GetDPx()*fRes->GetDPx();
260 covSeed(4,4) = fRes->GetDPy()*fRes->GetDPy();
261 covSeed(5,5) = fRes->GetDPz()*fRes->GetDPz();
265 TVector3 plane_v1, plane_v2;
268 plane_v1 = StartMom.Orthogonal();
269 plane_v2 = StartPos.Cross(plane_v1);
273 plane_v1.SetXYZ(1.,0.,0.);
274 plane_v2.SetXYZ(0.,1.,0.);
294 std::cout<<
"*** PndRecoDafFit2::Fit" <<
"\t" <<
"FITTER EXCEPTION ***"<<std::endl;
295 std::cout<<e.
what()<<std::endl;
298 if (
fVerbose>0) std::cout<<
"** PndRecoDafFit2::Fit" <<
"\t" <<
"SUCCESSFULL FIT!"<<std::endl;
306 std::cout<<
"*** PndRecoDafFit2::Fit" <<
"\t" <<
"CONVERSION EXCEPTION ***"<<std::endl;
307 std::cout<<e.
what()<<std::endl;
312 if (
fVerbose>0) std::cout<<
"*** PndRecoDafFit2::Fit" <<
"\t" <<
"Fitting done"<<std::endl;
static void quiet(bool b=true)
"std::cerr << e.what();" will not write anything.
Track candidate – seed values and indices.
void addProducer(int detID, AbsMeasurementProducer< measurement_T > *hitProd)
Register a producer module to the factory.
genfit::MeasurementFactory< genfit::AbsMeasurement > * fTheRecoHitFactory
TString fCentralTrackerBranchName
Name of the TCA for MVD.
static FieldManager * getInstance()
Get singleton instance.
PndTrack * Fit(PndTrack *tBefore, Int_t PDG)
void setMaxIterations(unsigned int n)
Set the maximum number of iterations.
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Abstract base class for a track representation.
TString fMvdBranchName
Geane Propagator.
void processTrack(Track *, bool resortHits=false)
genfit::TrackCand * PndTrackCand2Genfit2TrackCand(PndTrackCand *cand)
void init(AbsBField *b)
set the magnetic field here. Magnetic field classes must be derived from AbsBField.
AbsMaterialInterface implementation for use with ROOT's TGeoManager.
Float_t fPropagateDistance
Flag to propagate to the interaction point.
static MaterialEffects * getInstance()
PndTrackCand GetTrackCand()
TClonesArray * FillTubeArray()
Bool_t fPropagateToIP
Flag to use Geane.
void init(AbsMaterialInterface *matIfc)
set the material interface here. Material interface classes must be derived from AbsMaterialInterface...
friend F32vec4 fabs(const F32vec4 &a)
static PndGeoHandling * Instance()
Int_t fNumIt
Flag to use as initial plane the one perpendicular to the track.
Int_t fVerbose
Number of iterations.
Exception class for error handling in GENFIT (provides storage for diagnostic information) ...
PndTrack * Genfit2Track2PndTrack(const genfit::Track *tr)
AbsTrackRep with 5D track parameterization in plane coordinates: (q/p, u', v', u, v) ...
Bool_t fPerpPlane
Distance in [cm] to back-propagate the parameters, negative number means no backpropagation.
Bool_t fUseGeane
Name of the TCA for central tracker.
Template class for a measurement producer module.
virtual const char * what() const
Standard error message handling for exceptions. use like "std::cerr << e.what();".
void setCovSeed(const TMatrixDSym &cov6D)
set the covariance matrix seed (6D).
FairTrackParP GetParamFirst()