15 #include "FairRootManager.h"
16 #include "FairTimeStamp.h"
17 #include "FairRunAna.h"
23 #include "TClonesArray.h"
38 FairRootManager* ioman = FairRootManager::Instance();
40 std::cout <<
"-E- PndXYResidualTaskT::Init: "
41 <<
"RootManager not instantiated!" << std::endl;
47 fTrackArray = (TClonesArray*)FairRootManager::Instance()->GetObject(
"MvdTrack");
49 fMissingHitArray = FairRootManager::Instance()->Register(
"MvdMissingHit",
"PndSdsHit",
"MVD", kTRUE);
50 fProjectedHitArray = FairRootManager::Instance()->Register(
"MvdProjectedHit",
"PndSdsHit",
"MVD", kTRUE);
51 fGoodHitArray = FairRootManager::Instance()->Register(
"GoodHit",
"PndSdsHit",
"MVD", kTRUE);
55 fHc0c0 =
new TH2D(
"fHc0c0",
"fHc0c0", 200, -0.1, 0.1, 200, -0.1, 0.1);
56 fHc0c1 =
new TH2D(
"fHc0c1",
"fHc0c1", 200, -0.1, 0.1, 200, -0.1, 0.1);
57 fHc0c2 =
new TH2D(
"fHc0c2",
"fHc0c2", 200, -0.1, 0.1, 200, -0.1, 0.1);
58 fHc0c3 =
new TH2D(
"fHc0c3",
"fHc0c3", 200, -0.1, 0.1, 200, -0.1, 0.1);
59 fHc0c0cut =
new TH2D(
"fHc0c0cut",
"fHc0c0cut", 400, -0.02, 0.02, 400, -0.02, 0.02);
60 fHc0c1cut =
new TH2D(
"fHc0c1cut",
"fHc0c1cut", 400, -0.02, 0.02, 400, -0.02, 0.02);
61 fHc0c2cut =
new TH2D(
"fHc0c2cut",
"fHc0c2cut", 400, -0.02, 0.02, 400, -0.02, 0.02);
62 fHc0c3cut =
new TH2D(
"fHc0c3cut",
"fHc0c3cut", 400, -0.02, 0.02, 400, -0.02, 0.02);
63 fHMissingHits =
new TH1D(
"fHMIssingHits",
"MissingHits", 4, -0.5,3.5);
75 std::cout <<
"-I- PndXYResidualTask: Event " <<
fEntryNr << std::endl;
77 std::set<int> sensorIDs;
81 for (
int i = 0;
i < 4;
i++)
88 std::set<int> tempIDs = sensorIDs;
89 for (
int iHits = 0; iHits < hits.size(); iHits++){
93 TVector3 predicted =
PropagateToZ(myTrack, myHit->GetZ());
121 if (tempIDs.size() > 0){
122 for (std::set<int>::iterator it = tempIDs.begin(); it != tempIDs.end(); it++){
125 TVector3 missingHit =
PropagateToZ(myTrack, 10 + 6 * sensID);
126 TVector3 errorMHit(0,0,0);
131 for (
int j = 0; j < 4; j++){
132 TVector3 projectedHit =
PropagateToZ(myTrack, 10 + 6 * j);
136 if (j == 0) correction.SetXYZ(-1.348e-3, -4.01e-3, 0);
137 else if (j == 1) correction.SetXYZ(+4.97e-3, 4.978e-3, 0);
138 else if (j == 2) correction.SetXYZ(-7.21e-3, 0.42e-3, 0);
139 else if (j == 3) correction.SetXYZ(+3.556e-3, -7.569e-3, 0);
140 errorMHit = projectedHit + correction;
143 new ((*fProjectedHitArray)[
fProjectedHitArray->GetEntriesFast()])
PndSdsHit(-1, j, projectedHit, errorMHit, -1, -1, hits.size(), -1);
162 return origin + t * dir;
TClonesArray * fTrackArray
TVector3 GetPosition() const
virtual void Exec(Option_t *opt)
std::vector< PndTrackCandHit > GetSortedHits()
TVector3 PropagateToZ(PndTrack *aTrack, Double_t z)
virtual void FinishTask()
virtual InitStatus ReInit()
TClonesArray * fProjectedHitArray
virtual InitStatus Init()
virtual void FinishEvent()
TClonesArray * fMissingHitArray
drchit SetVerbose(iVerbose)
Int_t GetSensorID() const
PndTrackCand * GetTrackCandPtr()
TClonesArray * fGoodHitArray
FairTrackParP GetParamFirst()