lcsim/src/org/lcsim/recon/muon
diff -u -r1.11 -r1.12
--- MuonReco.java 30 Jan 2006 21:58:51 -0000 1.11
+++ MuonReco.java 16 Jun 2006 20:41:28 -0000 1.12
@@ -16,22 +16,23 @@
// Use the stepper instead of the swimmer in BarrelCalsegmentFinder
// and in MuonCalSegmentFinder to include dE/dx and the magnetic field
// C. Milstene
-public class MuonReco extends Driver
+
+ public class MuonReco extends Driver
{
public MuonReco()
{
- this(0,1, 1); // renew
+ this(0,1, 0); // renew
}
-
+
public MuonReco(int ecalHitsCut, int hcalHitsCut, int muHitsCut)
{
this("EcalBarrHits","HcalBarrHits", "MuonBarrHits", ecalHitsCut,hcalHitsCut, muHitsCut);
}
-
+
public MuonReco(String ecalName,String hcalName, String muName,
int ecalHitsCut,int hcalHitsCut,int muHitsCut)
{
-
+
// Initialize data
emCalName = ecalName; // new
hadCalName = hcalName;
@@ -40,78 +41,52 @@
minHCalHits = hcalHitsCut;
minMuHits = muHitsCut;
}
-
+
protected void process(EventHeader event)
{
// Instantiate MuonList object to hold list of muon candidates
MuonList muonList = new MuonList();
-
+
// Create segment finders - one for the hadron calorimeter,
// and one for the muon calorimeter
BarrelCalSegmentFinder ecalSegmentFinder = new BarrelCalSegmentFinder( // new
event.getDetector(), "EMBarrel");
-
+
BarrelCalSegmentFinder hcalSegmentFinder = new BarrelCalSegmentFinder(
event.getDetector(), "HADBarrel");
MuonCalSegmentFinder muSegmentFinder = new MuonCalSegmentFinder(
event.getDetector(), "MuonBarrel");
-
+
// Loop through all tracks in this event
-// for (Enumeration e = event.getTrackList().getTracks();
-// e.hasMoreElements();)
for( Track trk : event.getTracks() )
- // Dec-25-05
- // List<Track> recoTracks = event.get(Track.class, "CombinedTracks");
- // System.out.println("TrackingCheater: # parts="+recoTracks.size());
- // for( Track trk : recoTracks)
- {
- //double[] vtx = trk.getReferencePoint() ;
- //double[] pvec = trk.getMomentum() ;
+ {
int icharge =trk.getCharge();
- // double massM = ((CheatTrack)trk).getMCParticle().getMass() ;
-
// Instantiate TrkParams object for this track
double [] params = trk.getTrackParameters();
- System.out.println("MR new trkParms: "+params[0]+" "+params[1]+" "+params[2]+" "+params[3]);
+
TrkParams trkParams = new TrkParams(
params[0], params[1], params[2], params[3], params[4]);
- // Dec 25-05 -C.M.
+ // Dec 25-05 -C.M.
TrackStepper stpr = new TrackStepper(); //C.M.- Stepper for dE/dx Calculation
double []rpVMR = new double[8];
- double massM = 0.105658369;
-
- // for(int i=0; i<3;i++)
- // {
- // rpVMR [i]=vtx[i] ; rpVMR[i+3]=pvec[i];
- // }
-
- // rpVMR[7]=icharge; rpVMR[6]= massM;
-
- // stpr.setNewRp(rpVMR); // update phase space point -Dec-25-05-C.M.
- //End -Dec 25-05
-
+ double massM = 0.105658369;
rpVMR = stpr.rpFromTrkParams(trkParams,massM);
- System.out.println("MR: Before EMCal");
- System.out.println("MR: from Tkparams xyz="+ rpVMR[0]+" "+rpVMR[1]+" "+rpVMR[2]);
- System.out.println("MR: from Tkparams Pxyz="+rpVMR[3]+" "+rpVMR[4]+" "+rpVMR[5]);
+
// Find em calorimeter hits
boolean stoppedTk= stpr.getStopTkELow();
+ System.out.println("a");
if(!stpr.getStopTkELow())
ecalSegmentFinder.findSegment(event,stpr);
-
// Find had calorimeter hits
System.out.println("MR:Before HCAL");
if(!stpr.getStopTkELow())
hcalSegmentFinder.findSegment(event,stpr);
rpVMR=stpr.getNewRp();
- double thetMR=Math.atan2(stpr.partR(),rpVMR[2]);
- System.out.println("swimOnly: Pabs="+stpr.partPabs()+", theta="+(thetMR*180/Math.PI)+", trk="+trk);
-
+ double thetMR=Math.atan2(stpr.partR(rpVMR),rpVMR[2]);
System.out.println("MR:Before MUDET");
// Find muon hits
-
if(!stpr.getStopTkELow())
muSegmentFinder.findSegment(event,stpr);
rpVMR = stpr.getNewRp();
@@ -129,123 +104,124 @@
hcalSegmentFinder.getHits(),
muSegmentFinder.getNHits(), muSegmentFinder.getNLayersHit(),
muSegmentFinder.getHits());
- double x = rpVMR[0];
- double y = rpVMR[1];
- double rho = Math.sqrt(x*x+y*y);
- double theta = Math.atan2(rho,rpVMR[2])*180/Math.PI;
- System.out.println("MuonReco: #muons="+muonList.getNMuons()
- +", #hits: Ecal="+ecalSegmentFinder.getNHits()
- +", Hcal="+hcalSegmentFinder.getNHits()
- +", muon="+muSegmentFinder.getNHits()
- +", E="+stpr.partPabs()
+ double rho = Math.sqrt(rpVMR[0]*rpVMR[0]+rpVMR[1]*rpVMR[1]);
+ double theta = Math.atan2(rho,rpVMR[2])*180/Math.PI;
+ System.out.println("MuonReco: #muons="+muonList.getNMuons()
+ +", #hits: Ecal="+ecalSegmentFinder.getNHits()
+ +", Hcal="+hcalSegmentFinder.getNHits()
+ +", muon="+muSegmentFinder.getNHits()
+ +", E="+stpr.partPabs(rpVMR)
+", z="+rpVMR[2]
+", rho="+rho
+", theta="+theta );
}
Vector vtrack = ecalSegmentFinder.getHitPos();
- System.out.println("ECAL-vtrack="+vtrack+" "+ (vtrack == null ? 0 : vtrack.size()));
- // Reset for the next track
- vtrack = hcalSegmentFinder.getHitPos();
- System.out.println("HCAL-vtrack="+vtrack+" "+ (vtrack == null ? 0 : vtrack.size()));
+ System.out.println("ECAL-vtrack="+vtrack+" "+ (vtrack == null ? 0 : vtrack.size()));
+ vtrack = hcalSegmentFinder.getHitPos();
+ System.out.println("HCAL-vtrack="+vtrack+" "+ (vtrack == null ? 0 : vtrack.size()));
+ // Reset for the next track
ecalSegmentFinder.reset(); // C.M.- Include the Ecal inthe code
hcalSegmentFinder.reset();
muSegmentFinder.reset();
- stpr.clear(); // reset track in stepper/phasspace
+ stpr.clear(); // reset track in stepper/phasspace
}
-
+
// Close the muon list (this will sort muon candidates by Pt)
-
+
muonList.close();
- System.out.println("MuonReco: Final # muons="+muonList.getNMuons());
+ //System.out.println("MuonReco: Final # muons="+muonList.getNMuons());
// Add the muon list to the event
List<MuonCandidate> muons = new Vector<MuonCandidate>();
- for( int i=0; i<muonList.getNMuons(); ++i ) {
+ for( int i=0; i<muonList.getNMuons(); ++i ) {
MuonCandidate muon = muonList.getMuonAt(i);
muons.add(muon);
- }
- System.out.println("Writing muons to event: # muons = "+muons.size());
+ }
+ //System.out.println("Writing muons to event: # muons = "+muons.size());
event.put("MuonList", muons, MuonCandidate.class, 0);
-
+
Vector v = ecalSegmentFinder.getHitPos();
System.out.println("v="+v+" "+ (v == null ? 0 : v.size()));
- event.put("ecalBarrelPoints",ecalSegmentFinder.getHitPos());
+ event.put("BarrelEcalPoints",ecalSegmentFinder.getHitPos());
v = hcalSegmentFinder.getHitPos();
System.out.println("v hcal"+v+" " +(v==null ? 0:v.size()));
- event.put("hcalBarrelPoints",hcalSegmentFinder.getHitPos());
+ event.put("BarrelHcalPoints",hcalSegmentFinder.getHitPos());
+ v =muSegmentFinder.getHitPos();
+ System.out.println("v mudet"+v+" " +(v==null ? 0:v.size()));
+ event.put("BarrelMudetPoints",muSegmentFinder.getHitPos());
}
-
+
public int getMinECalHits() // C.M.- Include Ecal in the code
{
-
+
// Get the electromagnetic calorimeter hits cut
-
+
return(minECalHits);
}
-
+
public int getMinHCalHits()
{
-
+
// Get the hadron calorimeter hits cut
-
+
return(minHCalHits);
}
-
+
public int getMinMuHits()
{
-
+
// Get the muon hits cut
-
+
return(minMuHits);
}
-
+
public void setMinECalHits(int cut) // new
{
-
+
// Set the hadron calorimeter hits cut
-
+
minECalHits = cut;
}
-
+
public void setMinHCalHits(int cut)
{
-
+
// Set the hadron calorimeter hits cut
-
+
minHCalHits = cut;
}
-
+
public void setMinMuHits(int cut)
{
-
+
// Set the muon hits cut
-
+
minMuHits = cut;
}
public String getEmCalName() // new
{
-
+
// Get the name of the electromagnetic calorimeter
-
+
return(emCalName);
}
-
+
public String getHadCalName()
{
-
+
// Get the name of the hadron calorimeter
-
+
return(hadCalName);
}
-
+
public String getMuSysName()
{
-
+
// Get the name of the muon system
-
+
return(muSysName);
}
-
+
private int minECalHits; // C.M- Include EM in the code
private int minHCalHits;
private int minMuHits;