diff --git a/Makefile b/Makefile
index 0b86cf7a6e7325acd369ee1caa32f80635ca3f15..b03e0e4f67b0d80ed064d2b00925d75663d1be07 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,7 @@ SRC  =  src/THcInterface.cxx src/THcParmList.cxx src/THcAnalyzer.cxx \
 	src/THcShower.cxx src/THcShowerPlane.cxx \
 	src/THcRawShowerHit.cxx \
 	src/THcAerogel.cxx src/THcAerogelHit.cxx \
+	src/THcCherenkov.cxx src/THcCherenkovHit.cxx \
 	src/THcFormula.cxx
 
 # Name of your package. 
diff --git a/SConscript.py b/SConscript.py
index 52beeebe4ae81fa9f21e01cad33bed7bb334822d..79197c4e87aedb713be06cd6996cb4b612415f4d 100644
--- a/SConscript.py
+++ b/SConscript.py
@@ -16,8 +16,8 @@ hcheaders = Split("""
 	src/THcScintillatorPlane.h src/THcHodoscopeHit.h src/THcDC.h src/THcDriftChamberPlane.h 
 	src/THcDriftChamber.h src/THcRawDCHit.h src/THcDCHit.h src/THcDCWire.h src/THcSpacePoint.h 
 	src/THcDCLookupTTDConv.h src/THcDCTimeToDistConv.h src/THcShower.h src/THcShowerPlane.h 
-	src/THcRawShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcGlobals.h src/THcDCTrack.h
-        src/THcFormula.h
+	src/THcRawShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcCherenkov.h src/THcCherenkovHit.h
+        src/THcGlobals.h src/THcDCTrack.h src/THcFormula.h
 	src/HallC_LinkDef.h
 	""")
 pbaseenv.RootCint(roothcdict,hcheaders)
diff --git a/examples/PARAM/hcana.param b/examples/PARAM/hcana.param
index 1f9e393f0b67fed0ccc4079beadd84ae881bd61b..87352735a9009cfca828f64088e88b744c479292 100644
--- a/examples/PARAM/hcana.param
+++ b/examples/PARAM/hcana.param
@@ -17,6 +17,7 @@ hcal_c_cor = 64.36
 hcal_d_cor = 1.66
 
 haero_num_pairs = 8
+hcher_num_pairs = 2
 
 # Names of planes so that parameter names can be constructed
 hdc_plane_names = "1x1 1y1 1u1 1v1 1y2 1x2 2x1 2y1 2u1 2v1 2y2 2x2"
diff --git a/examples/PARAM/hcer.param b/examples/PARAM/hcer.param
index adaa5654d28d1041ff4ae86cbfa993d8001dcb73..5c7cfc8f1ab7b73c8d9015b8622a4c0b9005a0c3 100644
--- a/examples/PARAM/hcer.param
+++ b/examples/PARAM/hcer.param
@@ -17,7 +17,7 @@ hcer_width = 50, 50
 ;            tube: bot     top
 ;hcer_adc_to_npe = 1/93., 1/120.
 ; DJG June 21 2007: Quick and dirty online calibration.
-hcer_adc_to_npe = 1/149.6, 1/166.0.
+hcer_adc_to_npe = 1/149.6, 1/166.0
 
 hcer_chi2max = 50.
 hcer_beta_min = 0.8
diff --git a/examples/hodtest.C b/examples/hodtest.C
index cd4d937a257d7a3a3fc9fe75979631b106c06cda..37703cc1ec8bead47b1651aab03b9f72d8e35b98 100644
--- a/examples/hodtest.C
+++ b/examples/hodtest.C
@@ -5,8 +5,8 @@
   //  Steering script to test hodoscope decoding
   //
   
-  Int_t RunNumber=50017;
-  char* RunFileNamePattern="daq04_%d.log.0";
+  Int_t RunNumber=52949;
+  char* RunFileNamePattern="/cache/mss/hallc/daq04/raw/daq04_%d.log.0";
   
   gHcParms->Define("gen_run_number", "Run Number", RunNumber);
   gHcParms->AddString("g_ctp_database_filename", "DBASE/test.database");
@@ -41,6 +41,8 @@
   HMS->AddDetector( new THcDC("dc", "Drift Chambers" ));
   THcAerogel* aerogel = new THcAerogel("aero", "Aerogel Cerenkov" );
   HMS->AddDetector( aerogel );
+  THcCherenkov* cherenkov = new THcCherenkov("cher", "Gas Cerenkov" );
+  HMS->AddDetector( cherenkov );
 
   // Set up the analyzer - we use the standard one,
   // but this could be an experiment-specific one as well.
@@ -63,7 +65,7 @@
 
   // Eventually need to learn to skip over, or properly analyze
   // the pedestal events
-  run->SetEventRange(1,2000);//  Physics Event number, does not
+  run->SetEventRange(1,20000);//  Physics Event number, does not
                                 // include scaler or control events
 
   // Define the analysis parameters
diff --git a/examples/hodtest_cuts.def b/examples/hodtest_cuts.def
index 8d0581f60b0568bcad842814e83ce58d74803e4c..b98813f6ec77fd92424d996776c49cd53ad924cd 100644
--- a/examples/hodtest_cuts.def
+++ b/examples/hodtest_cuts.def
@@ -10,60 +10,60 @@ Decode_master     !Pedestal_event
 
 Block: CoarseTracking
 
-hfoundtrack	H.dc.ntrack != 0
-hfound1track	H.dc.ntrack == 1
-hfound2track	H.dc.ntrack == 2
-hfound3track	H.dc.ntrack == 3
-hfound4track	H.dc.ntrack == 4
+#hfoundtrack	H.dc.ntrack != 0
+#hfound1track	H.dc.ntrack == 1
+#hfound2track	H.dc.ntrack == 2
+#hfound3track	H.dc.ntrack == 3
+#hfound4track	H.dc.ntrack == 4
 
-goodhdc1x1	(H.dc.1x1.nhit > 0) && (H.dc.1x1.nhit < 3)
-goodhdc1y1	(H.dc.1y1.nhit > 0) && (H.dc.1y1.nhit < 3)
-goodhdc1u1	(H.dc.1u1.nhit > 0) && (H.dc.1u1.nhit < 3)
-goodhdc1v1	(H.dc.1v1.nhit > 0) && (H.dc.1v1.nhit < 3)
-goodhdc1y2	(H.dc.1y2.nhit > 0) && (H.dc.1y2.nhit < 3)
-goodhdc1x2	(H.dc.1x2.nhit > 0) && (H.dc.1x2.nhit < 3)
+#goodhdc1x1	(H.dc.1x1.nhit > 0) && (H.dc.1x1.nhit < 3)
+#goodhdc1y1	(H.dc.1y1.nhit > 0) && (H.dc.1y1.nhit < 3)
+#goodhdc1u1	(H.dc.1u1.nhit > 0) && (H.dc.1u1.nhit < 3)
+#goodhdc1v1	(H.dc.1v1.nhit > 0) && (H.dc.1v1.nhit < 3)
+#goodhdc1y2	(H.dc.1y2.nhit > 0) && (H.dc.1y2.nhit < 3)
+#goodhdc1x2	(H.dc.1x2.nhit > 0) && (H.dc.1x2.nhit < 3)
 
-goodhdc2x1	(H.dc.2x1.nhit > 0) && (H.dc.2x1.nhit < 3)
-goodhdc2y1	(H.dc.2y1.nhit > 0) && (H.dc.2y1.nhit < 3)
-goodhdc2u1	(H.dc.2u1.nhit > 0) && (H.dc.2u1.nhit < 3)
-goodhdc2v1	(H.dc.2v1.nhit > 0) && (H.dc.2v1.nhit < 3)
-goodhdc2y2	(H.dc.2y2.nhit > 0) && (H.dc.2y2.nhit < 3)
-goodhdc2x2	(H.dc.2x2.nhit > 0) && (H.dc.2x2.nhit < 3)
+#goodhdc2x1	(H.dc.2x1.nhit > 0) && (H.dc.2x1.nhit < 3)
+#goodhdc2y1	(H.dc.2y1.nhit > 0) && (H.dc.2y1.nhit < 3)
+#goodhdc2u1	(H.dc.2u1.nhit > 0) && (H.dc.2u1.nhit < 3)
+#goodhdc2v1	(H.dc.2v1.nhit > 0) && (H.dc.2v1.nhit < 3)
+#goodhdc2y2	(H.dc.2y2.nhit > 0) && (H.dc.2y2.nhit < 3)
+#goodhdc2x2	(H.dc.2x2.nhit > 0) && (H.dc.2x2.nhit < 3)
 
-goodhdc1	goodhdc1x1 && goodhdc1y1 && goodhdc1u1 && goodhdc1v1 && goodhdc1y2 && goodhdc1x2
-goodhdc2	goodhdc2x1 && goodhdc2y1 && goodhdc2u1 && goodhdc2v1 && goodhdc2y2 && goodhdc2x2
-bothgoodhdc	goodhdc1 && goodhdc2
+#goodhdc1	goodhdc1x1 && goodhdc1y1 && goodhdc1u1 && goodhdc1v1 && goodhdc#1y2 && goodhdc1x2
+#goodhdc2	goodhdc2x1 && goodhdc2y1 && goodhdc2u1 && goodhdc2v1 && goodhdc#2y2 && goodhdc2x2
+#bothgoodhdc	goodhdc1 && goodhdc2
 
-realhdc1x1	goodhdc1x1 && (H.dc.nsp != 0)
-realhdc1y1	goodhdc1y1 && (H.dc.nsp != 0)
-realhdc1u1	goodhdc1u1 && (H.dc.nsp != 0)
-realhdc1v1	goodhdc1v1 && (H.dc.nsp != 0)
-realhdc1y2	goodhdc1y2 && (H.dc.nsp != 0)
-realhdc1x2	goodhdc1x2 && (H.dc.nsp != 0)
-realhdc2x1	goodhdc2x1 && (H.dc.nsp != 0)
-realhdc2y1	goodhdc2y1 && (H.dc.nsp != 0)
-realhdc2u1	goodhdc2u1 && (H.dc.nsp != 0)
-realhdc2v1	goodhdc2v1 && (H.dc.nsp != 0)
-realhdc2y2	goodhdc2y2 && (H.dc.nsp != 0)
-realhdc2x2	goodhdc2x2 && (H.dc.nsp != 0)
+#realhdc1x1	goodhdc1x1 && (H.dc.nsp != 0)
+#realhdc1y1	goodhdc1y1 && (H.dc.nsp != 0)
+#realhdc1u1	goodhdc1u1 && (H.dc.nsp != 0)
+#realhdc1v1	goodhdc1v1 && (H.dc.nsp != 0)
+#realhdc1y2	goodhdc1y2 && (H.dc.nsp != 0)
+#realhdc1x2	goodhdc1x2 && (H.dc.nsp != 0)
+#realhdc2x1	goodhdc2x1 && (H.dc.nsp != 0)
+#realhdc2y1	goodhdc2y1 && (H.dc.nsp != 0)
+#realhdc2u1	goodhdc2u1 && (H.dc.nsp != 0)
+#realhdc2v1	goodhdc2v1 && (H.dc.nsp != 0)
+#realhdc2y2	goodhdc2y2 && (H.dc.nsp != 0)
+#realhdc2x2	goodhdc2x2 && (H.dc.nsp != 0)
 
 #hlowchi2	(hschi2perdeg<10) && hcleantrack
 
-hlowchi2	1
+#hlowchi2	1
 
-hdcres_1	(H.dc.residual[0] < 1000) && hlowchi2
-hdcres_2	(H.dc.residual[1] < 1000) && hlowchi2
-hdcres_3	(H.dc.residual[2] < 1000) && hlowchi2
-hdcres_4	(H.dc.residual[3] < 1000) && hlowchi2
-hdcres_5	(H.dc.residual[4] < 1000) && hlowchi2
-hdcres_6	(H.dc.residual[5] < 1000) && hlowchi2
-hdcres_7	(H.dc.residual[6] < 1000) && hlowchi2
-hdcres_8	(H.dc.residual[7] < 1000) && hlowchi2
-hdcres_9	(H.dc.residual[8] < 1000) && hlowchi2
-hdcres_10	(H.dc.residual[9] < 1000) && hlowchi2
-hdcres_11	(H.dc.residual[10] < 1000) && hlowchi2
-hdcres_12	(H.dc.residual[11] < 1000) && hlowchi2
+#hdcres_1	(H.dc.residual[0] < 1000) && hlowchi2
+#hdcres_2	(H.dc.residual[1] < 1000) && hlowchi2
+#hdcres_3	(H.dc.residual[2] < 1000) && hlowchi2
+#hdcres_4	(H.dc.residual[3] < 1000) && hlowchi2
+#hdcres_5	(H.dc.residual[4] < 1000) && hlowchi2
+#hdcres_6	(H.dc.residual[5] < 1000) && hlowchi2
+#hdcres_7	(H.dc.residual[6] < 1000) && hlowchi2
+#hdcres_8	(H.dc.residual[7] < 1000) && hlowchi2
+#hdcres_9	(H.dc.residual[8] < 1000) && hlowchi2
+#hdcres_10	(H.dc.residual[9] < 1000) && hlowchi2
+#hdcres_11	(H.dc.residual[10] < 1000) && hlowchi2
+#hdcres_12	(H.dc.residual[11] < 1000) && hlowchi2
 
-Block: CoarseReconstruct
-CourseReconstruct 1
+#Block: CoarseReconstruct
+#CourseReconstruct 1
 
diff --git a/examples/output.def b/examples/output.def
index 9797fc3f001a509dfecd0f59fefa1958a7177c2d..756e297e8b7fa9358f5e1b8676a2d1002847b953 100644
--- a/examples/output.def
+++ b/examples/output.def
@@ -4,9 +4,24 @@ block H.dc.*
 block H.hod.*
 block H.cal.*
 block H.aero.*
+block H.cher.*
 block H.tr.*
 block g.evtyp
 
+# Cherenkov histograms
+TH1F h_cher_aneg       'Cherenkov Aneg'         H.cher.aneg       100 0 6000
+TH1F h_cher_aneg_p     'Cherenkov Aneg_p'       H.cher.aneg_p     100 0 6000
+TH1F h_cher_aneg_p     'Cherenkov Apos'         H.cher.apos       100 0 6000
+TH1F h_cher_apos_p     'Cherenkov Apos'         H.cher.apos_p     100 0 60000
+TH1F h_cher_neg_npe    'Cherenkov Neg NPE'      H.cher.neg_npe    100 0 100
+TH1F h_cher_pos_npe    'Cherenkov neg tdc hits' H.cher.pos_npe    100 0 100
+TH1F h_cher_negadchits 'Cherenkov neg adc hits' H.cher.negadchits 100 0 100
+TH1F h_cher_negtdchits 'Cherenkov neg tdc hits' H.cher.negtdchits 10 -2 2
+TH1F h_cher_posadchits 'Cherenkov neg tdc hits' H.cher.posadchits 10 -0 2.2
+TH1F h_cher_postdchits 'Cherenkov pos tdc hits' H.cher.postdchits 10 -0 2.2
+TH1F h_cher_tneg       'Cherenkov tneg'         H.cher.tneg       10 -0.2 2.2
+TH1F h_cher_tpos       'Cherenkov tpos'         H.cher.tpos       10 -0.2 2.2
+
 # TDC hits per paddle
 TH1F hpostdc1 'HMS s1x+ TDC hits' H.hod.1x.postdchits 16 0.5 16.5
 TH1F hnegtdc1 'HMS s1x- TDC hits' H.hod.1x.negtdchits 16 0.5 16.5
diff --git a/src/HallC_LinkDef.h b/src/HallC_LinkDef.h
index 6ee4f49d0ca86d0614c9093cb12d39ef977e37ce..4992343bc16dc271e64850f7183247e04558678d 100644
--- a/src/HallC_LinkDef.h
+++ b/src/HallC_LinkDef.h
@@ -45,6 +45,8 @@
 #pragma link C++ class THcRawShowerHit+;
 #pragma link C++ class THcAerogel+;
 #pragma link C++ class THcAerogelHit+;
+#pragma link C++ class THcCherenkov+;
+#pragma link C++ class THcCherenkovHit+;
 #pragma link C++ class THcFormula+;
 
 #endif
diff --git a/src/SConscript.py b/src/SConscript.py
index 5cd9253d890bb38ab2103dfd102051dea3d47848..9a327b6b142af9e5d22637b9ce9043a3817c9783 100644
--- a/src/SConscript.py
+++ b/src/SConscript.py
@@ -22,7 +22,8 @@ THcSpacePoint.cxx THcDCTrack.cxx \
 THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx \
 THcShower.cxx THcShowerPlane.cxx \
 THcRawShowerHit.cxx \
-THcAerogel.cxx THcAerogelHit.cxx
+THcAerogel.cxx THcAerogelHit.cxx \
+THcCherenkov.cxx THcCherenkovHit.cxx \
 THcFormula.cxx
 """)