bug fix wireID, FindWireID
This commit is contained in:
parent
6790ef41df
commit
d710df842d
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -5,4 +5,4 @@ EventBuilder*
|
||||||
*.root
|
*.root
|
||||||
|
|
||||||
Mapper
|
Mapper
|
||||||
anasenMS
|
AnasenMS
|
|
@ -188,26 +188,30 @@ inline void PW::FindWireID(TVector3 pos, TVector3 direction, bool verbose ){
|
||||||
|
|
||||||
//==== find the 2nd nearest wire
|
//==== find the 2nd nearest wire
|
||||||
short anode1 = hitInfo.nearestWire.first;
|
short anode1 = hitInfo.nearestWire.first;
|
||||||
|
short aaa1 = anode1 - 1; if( aaa1 < 0 ) aaa1 += nWire;
|
||||||
|
short aaa2 = (anode1 + 1) % nWire;
|
||||||
|
|
||||||
double haha1 = Distance( pos, pos + direction, An[anode1-1].first, An[anode1-1].second);
|
double haha1 = Distance( pos, pos + direction, An[aaa1].first, An[aaa1].second);
|
||||||
double haha2 = Distance( pos, pos + direction, An[anode1+1].first, An[anode1+1].second);
|
double haha2 = Distance( pos, pos + direction, An[aaa2].first, An[aaa2].second);
|
||||||
if( haha1 < haha2){
|
if( haha1 < haha2){
|
||||||
hitInfo.nextNearestWire.first = anode1-1;
|
hitInfo.nextNearestWire.first = aaa1;
|
||||||
hitInfo.nextNearestDist.first = haha1;
|
hitInfo.nextNearestDist.first = haha1;
|
||||||
}else{
|
}else{
|
||||||
hitInfo.nextNearestWire.first = anode1+1;
|
hitInfo.nextNearestWire.first = aaa2;
|
||||||
hitInfo.nextNearestDist.first = haha2;
|
hitInfo.nextNearestDist.first = haha2;
|
||||||
}
|
}
|
||||||
|
|
||||||
short cathode1 = hitInfo.nearestWire.second;
|
short cathode1 = hitInfo.nearestWire.second;
|
||||||
|
short ccc1 = cathode1 - 1; if( ccc1 < 0 ) ccc1 += nWire;
|
||||||
|
short ccc2 = (cathode1 + 1) % nWire;
|
||||||
|
|
||||||
haha1 = Distance( pos, pos + direction, Ca[cathode1-1].first, Ca[cathode1-1].second);
|
haha1 = Distance( pos, pos + direction, Ca[ccc1].first, Ca[ccc1].second);
|
||||||
haha2 = Distance( pos, pos + direction, Ca[cathode1+1].first, Ca[cathode1+1].second);
|
haha2 = Distance( pos, pos + direction, Ca[ccc2].first, Ca[ccc2].second);
|
||||||
if( haha1 < haha2){
|
if( haha1 < haha2){
|
||||||
hitInfo.nextNearestWire.second = cathode1-1;
|
hitInfo.nextNearestWire.second = ccc1;
|
||||||
hitInfo.nextNearestDist.second = haha1;
|
hitInfo.nextNearestDist.second = haha1;
|
||||||
}else{
|
}else{
|
||||||
hitInfo.nextNearestWire.second = cathode1+1;
|
hitInfo.nextNearestWire.second = ccc2;
|
||||||
hitInfo.nextNearestDist.second = haha2;
|
hitInfo.nextNearestDist.second = haha2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,11 +245,11 @@ inline void PW::CalTrack2(TVector3 sx3Pos, PWHitInfo hitInfo, bool verbose){
|
||||||
TVector3 shiftA2 = (An[anodeID2].second - An[anodeID1].second) * fracA;
|
TVector3 shiftA2 = (An[anodeID2].second - An[anodeID1].second) * fracA;
|
||||||
|
|
||||||
double totDistC = hitInfo.nearestDist.second + hitInfo.nextNearestDist.second;
|
double totDistC = hitInfo.nearestDist.second + hitInfo.nextNearestDist.second;
|
||||||
double fracC = hitInfo.nearestDist.second / totDistA;
|
double fracC = hitInfo.nearestDist.second / totDistC;
|
||||||
short cathodeID1 = hitInfo.nearestWire.second;
|
short cathodeID1 = hitInfo.nearestWire.second;
|
||||||
short cathodeID2 = hitInfo.nextNearestWire.second;
|
short cathodeID2 = hitInfo.nextNearestWire.second;
|
||||||
TVector3 shiftC1 = (Ca[anodeID2].first - Ca[anodeID1].first) * fracC;
|
TVector3 shiftC1 = (Ca[cathodeID2].first - Ca[cathodeID1].first) * fracC;
|
||||||
TVector3 shiftC2 = (Ca[anodeID2].second - Ca[anodeID1].second) * fracC;
|
TVector3 shiftC2 = (Ca[cathodeID2].second - Ca[cathodeID1].second) * fracC;
|
||||||
|
|
||||||
TVector3 a1 = An[anodeID1].first + shiftA1;
|
TVector3 a1 = An[anodeID1].first + shiftA1;
|
||||||
TVector3 a2 = An[anodeID1].second + shiftA2;
|
TVector3 a2 = An[anodeID1].second + shiftA2;
|
||||||
|
|
|
@ -23,6 +23,6 @@ Mapper : Mapper.cpp ../mapping.h ClassDet.h
|
||||||
@echo "--------- making Mapper"
|
@echo "--------- making Mapper"
|
||||||
$(CC) $(COPTS) -o Mapper Mapper.cpp $(ROOTLIBS)
|
$(CC) $(COPTS) -o Mapper Mapper.cpp $(ROOTLIBS)
|
||||||
|
|
||||||
AnasenMS : ClassAnasen.h anasenMS.cpp Isotope.h constant.h
|
AnasenMS : constant.h Isotope.h ClassTransfer.h ClassSX3.h ClassPW.h ClassAnasen.h anasenMS.cpp
|
||||||
@echo "--------- making ANASEN Monte Carlo"
|
@echo "--------- making ANASEN Monte Carlo"
|
||||||
$(CC) $(COPTS) -o anasenMS anasenMS.cpp $(ROOTLIBS)
|
$(CC) $(COPTS) -o AnasenMS anasenMS.cpp $(ROOTLIBS)
|
||||||
|
|
|
@ -90,9 +90,13 @@ int main(int argc, char **argv){
|
||||||
tree->Branch("sx3Y", &sx3Y, "sx3Y/D");
|
tree->Branch("sx3Y", &sx3Y, "sx3Y/D");
|
||||||
tree->Branch("sx3Z", &sx3Z, "sx3Z/D");
|
tree->Branch("sx3Z", &sx3Z, "sx3Z/D");
|
||||||
|
|
||||||
int anodeID, cathodeID;
|
int anodeID[2], cathodeID[2];
|
||||||
tree->Branch("aID", &anodeID, "anodeID/I");
|
tree->Branch("aID", anodeID, "anodeID/I");
|
||||||
tree->Branch("cID", &cathodeID, "cathodeID/I");
|
tree->Branch("cID", cathodeID, "cathodeID/I");
|
||||||
|
|
||||||
|
double anodeDist[2], cathodeDist[2];
|
||||||
|
tree->Branch("aDist", anodeDist, "anodeDist/D");
|
||||||
|
tree->Branch("cDist", cathodeDist, "cathodeDist/D");
|
||||||
|
|
||||||
int sx3ID, sx3Up, sx3Dn, sx3Bk;
|
int sx3ID, sx3Up, sx3Dn, sx3Bk;
|
||||||
double sx3ZFrac;
|
double sx3ZFrac;
|
||||||
|
@ -106,6 +110,10 @@ int main(int argc, char **argv){
|
||||||
tree->Branch("reTheta", &reTheta, "reconstucted_theta/D");
|
tree->Branch("reTheta", &reTheta, "reconstucted_theta/D");
|
||||||
tree->Branch("rePhi", &rePhi, "reconstucted_phi/D");
|
tree->Branch("rePhi", &rePhi, "reconstucted_phi/D");
|
||||||
|
|
||||||
|
double reTheta1, rePhi1;
|
||||||
|
tree->Branch("reTheta1", &reTheta1, "reconstucted_theta1/D");
|
||||||
|
tree->Branch("rePhi1", &rePhi1, "reconstucted_phi1/D");
|
||||||
|
|
||||||
|
|
||||||
//========timer
|
//========timer
|
||||||
TBenchmark clock;
|
TBenchmark clock;
|
||||||
|
@ -156,10 +164,17 @@ int main(int argc, char **argv){
|
||||||
pw->FindWireID(vertex, dir, false);
|
pw->FindWireID(vertex, dir, false);
|
||||||
sx3->FindSX3Pos(vertex, dir, false);
|
sx3->FindSX3Pos(vertex, dir, false);
|
||||||
|
|
||||||
std::pair<int, int> wireID = pw->GetNearestID();
|
PWHitInfo hitInfo = pw->GetHitInfo();
|
||||||
|
|
||||||
anodeID = wireID.first;
|
anodeID[0] = hitInfo.nearestWire.first;
|
||||||
cathodeID = wireID.second;
|
cathodeID[0] = hitInfo.nearestWire.second;
|
||||||
|
anodeID[1] = hitInfo.nextNearestWire.first;
|
||||||
|
cathodeID[1] = hitInfo.nextNearestWire.second;
|
||||||
|
|
||||||
|
anodeDist[0] = hitInfo.nearestDist.first;
|
||||||
|
cathodeDist[0] = hitInfo.nearestDist.second;
|
||||||
|
anodeDist[1] = hitInfo.nextNearestDist.first;
|
||||||
|
cathodeDist[1] = hitInfo.nextNearestDist.second;
|
||||||
|
|
||||||
sx3ID = sx3->GetID();
|
sx3ID = sx3->GetID();
|
||||||
if( sx3ID >= 0 ){
|
if( sx3ID >= 0 ){
|
||||||
|
@ -172,11 +187,14 @@ int main(int argc, char **argv){
|
||||||
sx3Y = sx3->GetHitPos().Y();
|
sx3Y = sx3->GetHitPos().Y();
|
||||||
sx3Z = sx3->GetHitPos().Z();
|
sx3Z = sx3->GetHitPos().Z();
|
||||||
|
|
||||||
pw->CalTrack(sx3->GetHitPos(), wireID.first, wireID.second, false);
|
pw->CalTrack(sx3->GetHitPos(), anodeID[0], cathodeID[0], false);
|
||||||
|
|
||||||
reTheta = pw->GetTrackTheta() * TMath::RadToDeg();
|
reTheta = pw->GetTrackTheta() * TMath::RadToDeg();
|
||||||
rePhi = pw->GetTrackPhi() * TMath::RadToDeg();
|
rePhi = pw->GetTrackPhi() * TMath::RadToDeg();
|
||||||
|
|
||||||
|
pw->CalTrack2(sx3->GetHitPos(), hitInfo, false);
|
||||||
|
reTheta1 = pw->GetTrackTheta() * TMath::RadToDeg();
|
||||||
|
rePhi1 = pw->GetTrackPhi() * TMath::RadToDeg();
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
sx3Up = -1;
|
sx3Up = -1;
|
||||||
sx3Dn = -1;
|
sx3Dn = -1;
|
||||||
|
@ -192,7 +210,11 @@ int main(int argc, char **argv){
|
||||||
// }
|
// }
|
||||||
|
|
||||||
reTheta = TMath::QuietNaN();
|
reTheta = TMath::QuietNaN();
|
||||||
rePhi = TMath::QuietNaN();
|
rePhi = TMath::QuietNaN();
|
||||||
|
|
||||||
|
reTheta1 = TMath::QuietNaN();
|
||||||
|
rePhi1 = TMath::QuietNaN();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tree->Fill();
|
tree->Fill();
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
* email: goluckyryan@gmail.com
|
* email: goluckyryan@gmail.com
|
||||||
* ********************************************************************/
|
* ********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef constant
|
#ifndef constant
|
||||||
#define constant
|
#define constant
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
@ -69,7 +68,7 @@ const double hbar = 197.326979;
|
||||||
|
|
||||||
|
|
||||||
//======================================================================
|
//======================================================================
|
||||||
std::vector<std::string> SplitStr(std::string tempLine, std::string splitter, int shift = 0){
|
inline std::vector<std::string> SplitStr(std::string tempLine, std::string splitter, int shift = 0){
|
||||||
|
|
||||||
std::vector<std::string> output;
|
std::vector<std::string> output;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user