diff --git a/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/DCubeHistograms.py b/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/DCubeHistograms.py
index 8712bdf35ac072a0960289377890693f8da9b439..539aa2996deedb5213ca44f039205fc6c947b6e9 100644
--- a/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/DCubeHistograms.py
+++ b/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/DCubeHistograms.py
@@ -39,7 +39,7 @@ class MyHistoFiller(object):
     mdtGlobalP = ROOT.TH1F("mdtGlobalP","mdtGlobalP;MDT_hitGlobalPositionP",100,-3.6,3.6)
     mdtTube = ROOT.TH1F("mdtTube","mdtTube;MDT_Sim_tube",100,0,110)  
     #############################################################################
-    # CSCs Sim Histograms
+    # CSC Sim Histograms
     cscStationEta = ROOT.TH1F("cscStationEta","cscStationEta;CSC_stationEta",4,-3,1)
     cscStationPhi = ROOT.TH1F("cscStationPhi","cscStationPhi;CSC_stationPhi",9,0,9)
     cscGlobalX = ROOT.TH1F("cscGlobalX","cscGlobalX;CSC_hitGlobalPositionX",100,-1400,2200)
@@ -54,15 +54,51 @@ class MyHistoFiller(object):
     CSCDigitWireLayer = ROOT.TH1F("CSCDigitWireLayer","CSCDigitWireLayer;Digits_CSC_wireLayer",5,0,5)
     CSCDigitGasGap = ROOT.TH1F("CSCDigitGasGap","CSCDigitGasGap;Digits_CSC_gas_gap",4,0,4)
     CSCDigitChannel = ROOT.TH1F("CSCDigitChannel","CSCDigitChannel;Digits_CSC_channel",100,0,200)
-    CSCDigitTruthBarcode = ROOT.TH1F("CSCDigitTruthBarcode","CSCDigitTruthBarcode;Digits_CSC_truth_barcode",100,0,210000)
-    CSCDigitTruthlocalPosX = ROOT.TH1F("CSCDigitTruthlocalPosX","CSCDigitTruthlocalPosX;Digits_CSC_truth_localPosX",100,-110000,10000)
-    CSCDigitTruthlocalPosY = ROOT.TH1F("CSCDigitTruthlocalPosY","CSCDigitTruthlocalPosY;Digits_CSC_truth_localPosY",100,-110000,10000)
-    CSCDigitTruthglobalPosX = ROOT.TH1F("CSCDigitTruthglobalPosX","CSCDigitTruthglobalPosX;Digits_CSC_truth_globalPosX",100,-170000,170000)
-    CSCDigitTruthglobalPosY = ROOT.TH1F("CSCDigitTruthglobalPosY","CSCDigitTruthglobalPosY;Digits_CSC_truth_globalPosY",100,-170000,170000)
-    CSCDigitTruthglobalPosZ = ROOT.TH1F("CSCDigitTruthglobalPosZ","CSCDigitTruthglobalPosZ;Digits_CSC_truth_globalPosZ",100,-30000,-6500)
-    CSCDigitTruthCharge = ROOT.TH1F("CSCDigitTruthCharge","CSCDigitTruthCharge;Digits_CSC_truth_charge",100,0,2200)
+    CSCDigitlocalPosX = ROOT.TH1F("CSCDigitlocalPosX","CSCDigitlocalPosX;Digits_CSC_localPosX",100,0,100)
+    CSCDigitlocalPosY = ROOT.TH1F("CSCDigitlocalPosY","CSCDigitlocalPosY;Digits_CSC_localPosY",100,0,100)
+    CSCDigitglobalPosX = ROOT.TH1F("CSCDigitglobalPosX","CSCDigitglobalPosX;Digits_CSC_globalPosX",100,-1600,1600)
+    CSCDigitglobalPosY = ROOT.TH1F("CSCDigitglobalPosY","CSCDigitglobalPosY;Digits_CSC_globalPosY",100,-1600,1600)
+    CSCDigitglobalPosZ = ROOT.TH1F("CSCDigitglobalPosZ","CSCDigitglobalPosZ;Digits_CSC_globalPosZ",100,-8000,-7000)
+    # CSC SDO Histograms
+    CSCSDOStationEta = ROOT.TH1F("CSCSDOStationEta","CSCSDOStationEta;SDO_CSC_stationEta",4,-3,1)
+    CSCSDOStationPhi = ROOT.TH1F("CSCSDOStationPhi","CSCSDOStationPhi;SDO_CSC_stationPhi",9,0,9)
+    CSCSDOChamberLayer = ROOT.TH1F("CSCSDOChamberLayer","CSCSDOChamberLayer;SDO_CSC_chamberLayer",4,0,4)
+    CSCSDOWireLayer = ROOT.TH1F("CSCSDOWireLayer","CSCSDOWireLayer;SDO_CSC_wireLayer",5,0,5)
+    CSCSDOStrip = ROOT.TH1F("CSCSDOStrip","CSCSDOStrip;SDO_CSC_strip",100,0,200) 
+    CSCSDOBarcode = ROOT.TH1F("CSCSDOBarcode","CSCSDOBarcode;SDO_CSC_barcode",100,0,250000) 
+    CSCSDOGlobalX = ROOT.TH1F("CSCSDOGlobalX","CSCSDOGlobalX;SDO_CSC_globalPosX",100,-2000,2000)
+    CSCSDOGlobalY = ROOT.TH1F("CSCSDOGlobalY","CSCSDOGlobalY;SDO_CSC_globalPosY",100,-2000,2000)
+    CSCSDOGlobalZ = ROOT.TH1F("CSCSDOGlobalZ","CSCSDOGlobalZ;SDO_CSC_globalPosZ",100,-8000,8000)
+    CSCSDOLocalX = ROOT.TH1F("CSCSDOLocalX","CSCSDOLocalX;SDO_CSC_localPosX",100,-1000,1000)
+    CSCSDOLocalY = ROOT.TH1F("CSCSDOLocalY","CSCSDOLocalY;SDO_CSC_localPosY",100,-1000,1000)
+    # CSC RDO Histograms
+    CSCRDOStationEta = ROOT.TH1F("CSCRDOStationEta","CSCRDOStationEta;RDO_CSC_stationEta",4,-3,1)
+    CSCRDOStationPhi = ROOT.TH1F("CSCRDOStationPhi","CSCRDOStationPhi;RDO_CSC_stationPhi",9,0,9)
+    CSCRDOChamberLayer = ROOT.TH1F("CSCRDOChamberLayer","CSCRDOChamberLayer;RDO_CSC_chamberLayer",4,0,4)
+    CSCRDOWireLayer = ROOT.TH1F("CSCRDOWireLayer","CSCRDOWireLayer;RDO_CSC_wireLayer",5,0,5)
+    CSCRDOStrip = ROOT.TH1F("CSCRDOStrip","CSCRDOStrip;RDO_CSC_strip",100,0,200) 
+    CSCRDOmeasurePhi = ROOT.TH1F("CSCRDOmeasurePhi","CSCRDOmeasurePhi;RDO_CSC_measurePhi",2,0,2) 
+    CSCRDOTime = ROOT.TH1F("CSCRDOTime","CSCRDOTime;RDO_CSC_time",4,-2,2) 
+    CSCRDOGlobalX = ROOT.TH1F("CSCRDOGlobalX","CSCRDOGlobalX;RDO_CSC_globalPosX",100,-2500,2500)
+    CSCRDOGlobalY = ROOT.TH1F("CSCRDOGlobalY","CSCRDOGlobalY;RDO_CSC_globalPosY",100,-2500,2500)
+    CSCRDOGlobalZ = ROOT.TH1F("CSCRDOGlobalZ","CSCRDOGlobalZ;RDO_CSC_globalPosZ",100,-8000,8000)
+    CSCRDOLocalX = ROOT.TH1F("CSCRDOLocalX","CSCRDOLocalX;RDO_CSC_localPosX",100,-1000,1000)
+    CSCRDOLocalY = ROOT.TH1F("CSCRDOLocalY","CSCRDOLocalY;RDO_CSC_localPosY",100,-1000,1000)
+    # CSC PRD Histograms
+    CSCPRDStationEta = ROOT.TH1F("CSCPRDStationEta","CSCPRDStationEta;PRD_CSC_stationEta",4,-3,1)
+    CSCPRDStationPhi = ROOT.TH1F("CSCPRDStationPhi","CSCPRDStationPhi;PRD_CSC_stationPhi",9,0,9)
+    CSCPRDChamberLayer = ROOT.TH1F("CSCPRDChamberLayer","CSCPRDChamberLayer;PRD_CSC_chamberLayer",4,0,4)
+    CSCPRDWireLayer = ROOT.TH1F("CSCPRDWireLayer","CSCPRDWireLayer;PRD_CSC_wireLayer",5,0,5)
+    CSCPRDStrip = ROOT.TH1F("CSCPRDStrip","CSCPRDStrip;PRD_CSC_strip",100,0,200) 
+    CSCPRDmeasurePhi = ROOT.TH1F("CSCPRDmeasurePhi","CSCPRDmeasurePhi;PRD_CSC_measurePhi",2,0,2) 
+    CSCPRDTime = ROOT.TH1F("CSCPRDTime","CSCPRDTime;PRD_CSC_time",100,-100,1000)
+    CSCPRDCharge = ROOT.TH1F("CSCPRDCharge","CSCPRDCharge;PRD_CSC_charge",100,0,10000000)
+    CSCPRDGlobalX = ROOT.TH1F("CSCPRDGlobalX","CSCPRDGlobalX;PRD_CSC_globalPosX",100,-2500,2500)
+    CSCPRDGlobalY = ROOT.TH1F("CSCPRDGlobalY","CSCPRDGlobalY;PRD_CSC_globalPosY",100,-2500,2500)
+    CSCPRDGlobalZ = ROOT.TH1F("CSCPRDGlobalZ","CSCPRDGlobalZ;PRD_CSC_globalPosZ",100,-8000,8000)
+    CSCPRDLocalX = ROOT.TH1F("CSCPRDLocalX","CSCPRDLocalX;PRD_CSC_localPosX",100,-1000,1000)
     #############################################################################  
-    # TGCs Sim Histograms
+    # TGC Sim Histograms
     tgcLocalX = ROOT.TH1F("tgcLocalX","tgcLocalX;TGC_hitLocalPositionX",100,-1.5,1.5)
     tgcLocalY = ROOT.TH1F("tgcLocalY","tgcLocalY;TGC_hitLocalPositionY",100,-800,800)
     tgcLocalZ = ROOT.TH1F("tgcLocalZ","tgcLocalZ;TGC_hitLocalPositionZ",100,-1200,1200)
@@ -84,7 +120,41 @@ class MyHistoFiller(object):
     TGCDigitlocalY = ROOT.TH1F("TGCDigitlocalY","TGCDigitlocalY;Digits_TGC_localPosY",100,-12000,1000)
     TGCDigitglobalX = ROOT.TH1F("TGCDigitglobalX","TGCDigitglobalX;Digits_TGC_globalPosX",100,-12000,12000)
     TGCDigitglobalY = ROOT.TH1F("TGCDigitglobalY","TGCDigitglobalY;Digits_TGC_globalPosY",100,-12000,12000)
-    TGCDigitglobalZ = ROOT.TH1F("TGCDigitglobalZ","TGCDigitglobalZ;Digits_TGC_globalPosZ",100,18000,18000)
+    TGCDigitglobalZ = ROOT.TH1F("TGCDigitglobalZ","TGCDigitglobalZ;Digits_TGC_globalPosZ",100,-18000,18000)
+    # TGC SDO Histograms
+    TGCSDOStationEta = ROOT.TH1F("TGCSDOStationEta","TGCSDOStationEta;SDO_TGC_stationEta",12,-6,6)
+    TGCSDOStationPhi = ROOT.TH1F("TGCSDOStationPhi","TGCSDOStationPhi;SDO_TGC_stationPhi",50,0,50)
+    TGCSDOGasgap = ROOT.TH1F("TGCSDOGasgap","TGCSDOGasgap;SDO_TGC_gas_gap",4,0,4)
+    TGCSDOChannel = ROOT.TH1F("TGCSDOChannel","TGCSDOChannel;SDO_TGC_channel",100,0,140)
+    TGCSDOisStrip = ROOT.TH1F("TGCSDOisStrip","TGCSDOisStrip;SDO_TGC_isStrip",2,0,2) 
+    TGCSDOWord = ROOT.TH1F("TGCSDOWord","TGCSDOWord;SDO_TGC_word",4,-2,2) 
+    TGCSDOBarcode = ROOT.TH1F("TGCSDOBarcode","TGCSDOBarcode;SDO_TGC_barcode",100,0,10500) 
+    TGCSDOGlobalX = ROOT.TH1F("TGCSDOGlobalX","TGCSDOGlobalX;SDO_TGC_globalPosX",100,-15000,15000)
+    TGCSDOGlobalY = ROOT.TH1F("TGCSDOGlobalY","TGCSDOGlobalY;SDO_TGC_globalPosY",100,-15000,15000)
+    TGCSDOGlobalZ = ROOT.TH1F("TGCSDOGlobalZ","TGCSDOGlobalZ;SDO_TGC_globalPosZ",100,-20000,20000)
+    TGCSDOLocalX = ROOT.TH1F("TGCSDOLocalX","TGCSDOLocalX;SDO_TGC_localPosX",100,0,100)
+    TGCSDOLocalY = ROOT.TH1F("TGCSDOLocalY","TGCSDOLocalY;SDO_TGC_localPosY",100,0,100)
+    TGCSDOGlotime = ROOT.TH1F("TGCSDOGlotime","TGCSDOGlotime;SDO_TGC_global_time",100,0,100)
+    # TGC RDO Histograms
+    TGCRDOStationEta = ROOT.TH1F("TGCRDOStationEta","TGCRDOStationEta;RDO_TGC_stationEta",12,-6,6)
+    TGCRDOStationPhi = ROOT.TH1F("TGCRDOStationPhi","TGCRDOStationPhi;RDO_TGC_stationPhi",50,0,50)
+    TGCRDOGasgap = ROOT.TH1F("TGCRDOGasgap","TGCRDOGasgap;RDO_TGC_gas_gap",3,0,3)
+    TGCRDOChannel = ROOT.TH1F("TGCRDOChannel","TGCRDOChannel;RDO_TGC_channel",3,0,3)
+    TGCRDOisStrip = ROOT.TH1F("TGCRDOisStrip","TGCRDOisStrip;RDO_TGC_isStrip",4,-2,2) 
+    TGCRDOGlobalX = ROOT.TH1F("TGCRDOGlobalX","TGCRDOGlobalX;RDO_TGC_globalPosX",100,-10000,10000)
+    TGCRDOGlobalY = ROOT.TH1F("TGCRDOGlobalY","TGCRDOGlobalY;RDO_TGC_globalPosY",100,-10000,10000)
+    TGCRDOGlobalZ = ROOT.TH1F("TGCRDOGlobalZ","TGCRDOGlobalZ;RDO_TGC_globalPosZ",100,-16000,16000)
+    TGCRDOLocalX = ROOT.TH1F("TGCRDOLocalX","TGCRDOLocalX;RDO_TGC_localPosX",100,-1200,-400)
+    # TGC PRD Histograms
+    TGCPRDStationEta = ROOT.TH1F("TGCPRDStationEta","TGCPRDStationEta;PRD_TGC_stationEta",12,-6,6)
+    TGCPRDStationPhi = ROOT.TH1F("TGCPRDStationPhi","TGCPRDStationPhi;PRD_TGC_stationPhi",50,0,50)
+    TGCPRDGasgap = ROOT.TH1F("TGCPRDGasgap","TGCPRDGasgap;PRD_TGC_gas_gap",4,0,4)
+    TGCPRDChannel = ROOT.TH1F("TGCPRDChannel","TGCPRDChannel;PRD_TGC_channel",100,0,150)
+    TGCPRDisStrip = ROOT.TH1F("TGCPRDisStrip","TGCPRDisStrip;PRD_TGC_isStrip",2,0,2) 
+    TGCPRDGlobalX = ROOT.TH1F("TGCPRDGlobalX","TGCPRDGlobalX;PRD_TGC_globalPosX",100,-15000,15000)
+    TGCPRDGlobalY = ROOT.TH1F("TGCPRDGlobalY","TGCPRDGlobalY;PRD_TGC_globalPosY",100,-15000,15000)
+    TGCPRDGlobalZ = ROOT.TH1F("TGCPRDGlobalZ","TGCPRDGlobalZ;PRD_TGC_globalPosZ",100,-18000,18000)
+    TGCPRDLocalX = ROOT.TH1F("TGCPRDLocalX","TGCPRDLocalX;PRD_TGC_localPosX",100,-1500,1500)
     #############################################################################
     # MMs
     mmGlobalX = ROOT.TH1F("mmGlobalX","mmGlobalX;MM_hitGlobalPositionX",100,-5000,3000)
@@ -175,13 +245,61 @@ class MyHistoFiller(object):
                 MyHistoFiller.CSCDigitWireLayer.Fill(TTree.Digits_CSC_wireLayer[n])
                 MyHistoFiller.CSCDigitGasGap.Fill(TTree.Digits_CSC_gas_gap[n])
                 MyHistoFiller.CSCDigitChannel.Fill(TTree.Digits_CSC_channel[n])
-                MyHistoFiller.CSCDigitTruthBarcode.Fill(TTree.Digits_CSC_truth_barcode[n])
-                MyHistoFiller.CSCDigitTruthlocalPosX.Fill(TTree.Digits_CSC_truth_localPosX[n])
-                MyHistoFiller.CSCDigitTruthlocalPosY.Fill(TTree.Digits_CSC_truth_localPosY[n])
-                MyHistoFiller.CSCDigitTruthglobalPosX.Fill(TTree.Digits_CSC_truth_globalPosX[n])
-                MyHistoFiller.CSCDigitTruthglobalPosY.Fill(TTree.Digits_CSC_truth_globalPosY[n])
-                MyHistoFiller.CSCDigitTruthglobalPosZ.Fill(TTree.Digits_CSC_truth_globalPosZ[n])
-                MyHistoFiller.CSCDigitTruthCharge.Fill(TTree.Digits_CSC_truth_charge[n])
+                MyHistoFiller.CSCDigitlocalPosX.Fill(TTree.Digits_CSC_localPosX[n])
+                MyHistoFiller.CSCDigitlocalPosY.Fill(TTree.Digits_CSC_localPosY[n])
+                MyHistoFiller.CSCDigitglobalPosX.Fill(TTree.Digits_CSC_globalPosX[n])
+                MyHistoFiller.CSCDigitglobalPosY.Fill(TTree.Digits_CSC_globalPosY[n])
+                MyHistoFiller.CSCDigitglobalPosZ.Fill(TTree.Digits_CSC_globalPosZ[n])
+
+        if self.__chamber_name == "CSC_SDO":
+            if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
+                return
+            else:
+                MyHistoFiller.CSCSDOStationEta.Fill(TTree.SDO_CSC_stationEta[n])
+                MyHistoFiller.CSCSDOStationPhi.Fill(TTree.SDO_CSC_stationPhi[n])
+                MyHistoFiller.CSCSDOChamberLayer.Fill(TTree.SDO_CSC_chamberLayer[n])
+                MyHistoFiller.CSCSDOWireLayer.Fill(TTree.SDO_CSC_wireLayer[n])
+                MyHistoFiller.CSCSDOStrip.Fill(TTree.SDO_CSC_strip[n])
+                MyHistoFiller.CSCSDOBarcode.Fill(TTree.SDO_CSC_barcode[n])
+                MyHistoFiller.CSCSDOGlobalX.Fill(TTree.SDO_CSC_globalPosX[n])
+                MyHistoFiller.CSCSDOGlobalY.Fill(TTree.SDO_CSC_globalPosY[n])
+                MyHistoFiller.CSCSDOGlobalZ.Fill(TTree.SDO_CSC_globalPosZ[n])
+                MyHistoFiller.CSCSDOLocalX.Fill(TTree.SDO_CSC_localPosX[n])
+                MyHistoFiller.CSCSDOLocalY.Fill(TTree.SDO_CSC_localPosY[n])
+
+        if self.__chamber_name == "CSC_RDO":
+            if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
+                return
+            else:
+                MyHistoFiller.CSCRDOStationEta.Fill(TTree.RDO_CSC_StationEta[n])
+                MyHistoFiller.CSCRDOStationPhi.Fill(TTree.RDO_CSC_StationPhi[n])
+                MyHistoFiller.CSCRDOChamberLayer.Fill(TTree.RDO_CSC_chamberLayer[n])
+                MyHistoFiller.CSCRDOWireLayer.Fill(TTree.RDO_CSC_wireLayer[n])
+                MyHistoFiller.CSCRDOStrip.Fill(TTree.RDO_CSC_strip[n])
+                MyHistoFiller.CSCRDOmeasurePhi.Fill(TTree.RDO_CSC_measurePhi[n])
+                MyHistoFiller.CSCRDOTime.Fill(TTree.RDO_CSC_time[n])
+                MyHistoFiller.CSCRDOGlobalX.Fill(TTree.RDO_CSC_globalPosX[n])
+                MyHistoFiller.CSCRDOGlobalY.Fill(TTree.RDO_CSC_globalPosY[n])
+                MyHistoFiller.CSCRDOGlobalZ.Fill(TTree.RDO_CSC_globalPosZ[n])
+                MyHistoFiller.CSCRDOLocalX.Fill(TTree.RDO_CSC_localPosX[n])
+                MyHistoFiller.CSCRDOLocalY.Fill(TTree.RDO_CSC_localPosY[n])
+                
+        if self.__chamber_name == "CSC_PRD":
+            if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
+                return
+            else:
+                MyHistoFiller.CSCPRDStationEta.Fill(TTree.PRD_CSC_stationEta[n])
+                MyHistoFiller.CSCPRDStationPhi.Fill(TTree.PRD_CSC_stationPhi[n])
+                MyHistoFiller.CSCPRDChamberLayer.Fill(TTree.PRD_CSC_chlayer[n])
+                MyHistoFiller.CSCPRDWireLayer.Fill(TTree.PRD_CSC_wlayer[n])
+                MyHistoFiller.CSCPRDStrip.Fill(TTree.PRD_CSC_strip[n])
+                MyHistoFiller.CSCPRDmeasurePhi.Fill(TTree.PRD_CSC_measuresPhi[n])
+                MyHistoFiller.CSCPRDTime.Fill(TTree.PRD_CSC_time[n])
+                MyHistoFiller.CSCPRDCharge.Fill(TTree.PRD_CSC_charge[n])
+                MyHistoFiller.CSCPRDGlobalX.Fill(TTree.PRD_CSC_globalPosX[n])
+                MyHistoFiller.CSCPRDGlobalY.Fill(TTree.PRD_CSC_globalPosY[n])
+                MyHistoFiller.CSCPRDGlobalZ.Fill(TTree.PRD_CSC_globalPosZ[n])
+                MyHistoFiller.CSCPRDLocalX.Fill(TTree.PRD_CSC_localPosX[n])
 
         if self.__chamber_name == "TGC_Sim":
             if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
@@ -213,6 +331,52 @@ class MyHistoFiller(object):
                 MyHistoFiller.TGCDigitglobalX.Fill(TTree.Digits_TGC_globalPosX[n])
                 MyHistoFiller.TGCDigitglobalY.Fill(TTree.Digits_TGC_globalPosY[n])
                 MyHistoFiller.TGCDigitglobalZ.Fill(TTree.Digits_TGC_globalPosZ[n])
+                
+        if self.__chamber_name == "TGC_SDO":
+            if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
+                return
+            else:
+                MyHistoFiller.TGCSDOStationEta.Fill(TTree.SDO_TGC_stationEta[n])
+                MyHistoFiller.TGCSDOStationPhi.Fill(TTree.SDO_TGC_stationPhi[n])
+                MyHistoFiller.TGCSDOGasgap.Fill(TTree.SDO_TGC_gas_gap[n])
+                MyHistoFiller.TGCSDOChannel.Fill(TTree.SDO_TGC_channel[n])
+                MyHistoFiller.TGCSDOisStrip.Fill(TTree.SDO_TGC_isStrip[n])
+                MyHistoFiller.TGCSDOWord.Fill(TTree.SDO_TGC_word[n])
+                MyHistoFiller.TGCSDOBarcode.Fill(TTree.SDO_TGC_barcode[n])
+                MyHistoFiller.TGCSDOGlobalX.Fill(TTree.SDO_TGC_globalPosX[n])
+                MyHistoFiller.TGCSDOGlobalY.Fill(TTree.SDO_TGC_globalPosY[n])
+                MyHistoFiller.TGCSDOGlobalZ.Fill(TTree.SDO_TGC_globalPosZ[n])
+                MyHistoFiller.TGCSDOLocalX.Fill(TTree.SDO_TGC_localPosX[n])
+                MyHistoFiller.TGCSDOLocalY.Fill(TTree.SDO_TGC_localPosY[n])
+                MyHistoFiller.TGCSDOGlotime.Fill(TTree.SDO_TGC_global_time[n])
+                
+        if self.__chamber_name == "TGC_RDO":
+            if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
+                return
+            else:
+                MyHistoFiller.TGCRDOStationEta.Fill(TTree.RDO_TGC_stationEta[n])
+                MyHistoFiller.TGCRDOStationPhi.Fill(TTree.RDO_TGC_stationPhi[n])
+                MyHistoFiller.TGCRDOGasgap.Fill(TTree.RDO_TGC_gas_gap[n])
+                MyHistoFiller.TGCRDOChannel.Fill(TTree.RDO_TGC_channel[n])
+                MyHistoFiller.TGCRDOisStrip.Fill(TTree.RDO_TGC_isStrip[n])
+                MyHistoFiller.TGCRDOGlobalX.Fill(TTree.RDO_TGC_globalPosX[n])
+                MyHistoFiller.TGCRDOGlobalY.Fill(TTree.RDO_TGC_globalPosY[n])
+                MyHistoFiller.TGCRDOGlobalZ.Fill(TTree.RDO_TGC_globalPosZ[n])
+                MyHistoFiller.TGCRDOLocalX.Fill(TTree.RDO_TGC_localPosX[n])
+
+        if self.__chamber_name == "TGC_PRD":
+            if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
+                return
+            else:
+                MyHistoFiller.TGCPRDStationEta.Fill(TTree.PRD_TGC_stationEta[n])
+                MyHistoFiller.TGCPRDStationPhi.Fill(TTree.PRD_TGC_stationPhi[n])
+                MyHistoFiller.TGCPRDGasgap.Fill(TTree.PRD_TGC_gasGap[n])
+                MyHistoFiller.TGCPRDChannel.Fill(TTree.PRD_TGC_channel[n])
+                MyHistoFiller.TGCPRDisStrip.Fill(TTree.PRD_TGC_isStrip[n])
+                MyHistoFiller.TGCPRDGlobalX.Fill(TTree.PRD_TGC_globalPosX[n])
+                MyHistoFiller.TGCPRDGlobalY.Fill(TTree.PRD_TGC_globalPosY[n])
+                MyHistoFiller.TGCPRDGlobalZ.Fill(TTree.PRD_TGC_globalPosZ[n])
+                MyHistoFiller.TGCPRDLocalX.Fill(TTree.PRD_TGC_localPosX[n])
 
         if self.__chamber_name == "MM":
             if not (self.__eta_sel(TTree) and self.__sector_sel(TTree)):
@@ -273,6 +437,7 @@ class MyHistoFiller(object):
             outdir.WriteTObject(MyHistoFiller.mdtGlobalP, MyHistoFiller.mdtGlobalP.GetName())
             outdir.WriteTObject(MyHistoFiller.mdtTube, MyHistoFiller.mdtTube.GetName())
 
+
         if self.__chamber_name == "CSC_Sim":
             outdir.WriteTObject(MyHistoFiller.cscStationEta, MyHistoFiller.cscStationEta.GetName())
             outdir.WriteTObject(MyHistoFiller.cscStationPhi, MyHistoFiller.cscStationPhi.GetName())
@@ -289,13 +454,53 @@ class MyHistoFiller(object):
             outdir.WriteTObject(MyHistoFiller.CSCDigitWireLayer, MyHistoFiller.CSCDigitWireLayer.GetName())
             outdir.WriteTObject(MyHistoFiller.CSCDigitGasGap, MyHistoFiller.CSCDigitGasGap.GetName())
             outdir.WriteTObject(MyHistoFiller.CSCDigitChannel, MyHistoFiller.CSCDigitChannel.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthBarcode, MyHistoFiller.CSCDigitTruthBarcode.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthlocalPosX, MyHistoFiller.CSCDigitTruthlocalPosX.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthlocalPosY, MyHistoFiller.CSCDigitTruthlocalPosY.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthglobalPosX, MyHistoFiller.CSCDigitTruthglobalPosX.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthglobalPosY, MyHistoFiller.CSCDigitTruthglobalPosY.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthglobalPosZ, MyHistoFiller.CSCDigitTruthglobalPosZ.GetName())
-            outdir.WriteTObject(MyHistoFiller.CSCDigitTruthCharge, MyHistoFiller.CSCDigitTruthCharge.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCDigitlocalPosX, MyHistoFiller.CSCDigitlocalPosX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCDigitlocalPosY, MyHistoFiller.CSCDigitlocalPosY.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCDigitglobalPosX, MyHistoFiller.CSCDigitglobalPosX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCDigitglobalPosY, MyHistoFiller.CSCDigitglobalPosY.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCDigitglobalPosZ, MyHistoFiller.CSCDigitglobalPosZ.GetName())
+            
+        if self.__chamber_name == "CSC_SDO":
+            outdir.WriteTObject(MyHistoFiller.CSCSDOStationEta, MyHistoFiller.CSCSDOStationEta.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOStationPhi, MyHistoFiller.CSCSDOStationPhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOChamberLayer, MyHistoFiller.CSCSDOChamberLayer.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOWireLayer, MyHistoFiller.CSCSDOWireLayer.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOStrip, MyHistoFiller.CSCSDOStrip.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOBarcode, MyHistoFiller.CSCSDOBarcode.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOGlobalX, MyHistoFiller.CSCSDOGlobalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOGlobalY, MyHistoFiller.CSCSDOGlobalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOGlobalZ, MyHistoFiller.CSCSDOGlobalZ.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOLocalX, MyHistoFiller.CSCSDOLocalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCSDOLocalY, MyHistoFiller.CSCSDOLocalY.GetName())
+            
+        if self.__chamber_name == "CSC_RDO":
+            outdir.WriteTObject(MyHistoFiller.CSCRDOStationEta, MyHistoFiller.CSCRDOStationEta.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOStationPhi, MyHistoFiller.CSCRDOStationPhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOChamberLayer, MyHistoFiller.CSCRDOChamberLayer.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOWireLayer, MyHistoFiller.CSCRDOWireLayer.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOStrip, MyHistoFiller.CSCRDOStrip.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOmeasurePhi, MyHistoFiller.CSCRDOmeasurePhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOTime, MyHistoFiller.CSCRDOTime.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOGlobalX, MyHistoFiller.CSCRDOGlobalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOGlobalY, MyHistoFiller.CSCRDOGlobalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOGlobalZ, MyHistoFiller.CSCRDOGlobalZ.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOLocalX, MyHistoFiller.CSCRDOLocalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCRDOLocalY, MyHistoFiller.CSCRDOLocalY.GetName())
+
+        if self.__chamber_name == "CSC_PRD":
+            outdir.WriteTObject(MyHistoFiller.CSCPRDStationEta, MyHistoFiller.CSCPRDStationEta.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDStationPhi, MyHistoFiller.CSCPRDStationPhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDChamberLayer, MyHistoFiller.CSCPRDChamberLayer.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDWireLayer, MyHistoFiller.CSCPRDWireLayer.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDStrip, MyHistoFiller.CSCPRDStrip.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDmeasurePhi, MyHistoFiller.CSCPRDmeasurePhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDTime, MyHistoFiller.CSCPRDTime.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDCharge, MyHistoFiller.CSCPRDCharge.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDGlobalX, MyHistoFiller.CSCPRDGlobalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDGlobalY, MyHistoFiller.CSCPRDGlobalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDGlobalZ, MyHistoFiller.CSCPRDGlobalZ.GetName())
+            outdir.WriteTObject(MyHistoFiller.CSCPRDLocalX, MyHistoFiller.CSCPRDLocalX.GetName())
+
 
         if self.__chamber_name == "TGC_Sim":
             outdir.WriteTObject(MyHistoFiller.tgcLocalX, MyHistoFiller.tgcLocalX.GetName())
@@ -321,7 +526,44 @@ class MyHistoFiller(object):
             outdir.WriteTObject(MyHistoFiller.TGCDigitglobalX, MyHistoFiller.TGCDigitglobalX.GetName())
             outdir.WriteTObject(MyHistoFiller.TGCDigitglobalY, MyHistoFiller.TGCDigitglobalY.GetName())
             outdir.WriteTObject(MyHistoFiller.TGCDigitglobalZ, MyHistoFiller.TGCDigitglobalZ.GetName())
-        
+            
+        if self.__chamber_name == "TGC_SDO":
+            outdir.WriteTObject(MyHistoFiller.TGCSDOStationEta, MyHistoFiller.TGCSDOStationEta.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOStationPhi, MyHistoFiller.TGCSDOStationPhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOGasgap, MyHistoFiller.TGCSDOGasgap.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOChannel, MyHistoFiller.TGCSDOChannel.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOisStrip, MyHistoFiller.TGCSDOisStrip.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOWord, MyHistoFiller.TGCSDOWord.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOBarcode, MyHistoFiller.TGCSDOBarcode.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOGlobalX, MyHistoFiller.TGCSDOGlobalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOGlobalY, MyHistoFiller.TGCSDOGlobalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOGlobalZ, MyHistoFiller.TGCSDOGlobalZ.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOLocalX, MyHistoFiller.TGCSDOLocalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOLocalY, MyHistoFiller.TGCSDOLocalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCSDOGlotime, MyHistoFiller.TGCSDOGlotime.GetName())
+            
+        if self.__chamber_name == "TGC_RDO":
+            outdir.WriteTObject(MyHistoFiller.TGCRDOStationEta, MyHistoFiller.TGCRDOStationEta.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOStationPhi, MyHistoFiller.TGCRDOStationPhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOGasgap, MyHistoFiller.TGCRDOGasgap.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOChannel, MyHistoFiller.TGCRDOChannel.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOisStrip, MyHistoFiller.TGCRDOisStrip.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOGlobalX, MyHistoFiller.TGCRDOGlobalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOGlobalY, MyHistoFiller.TGCRDOGlobalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOGlobalZ, MyHistoFiller.TGCRDOGlobalZ.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCRDOLocalX, MyHistoFiller.TGCRDOLocalX.GetName())
+
+        if self.__chamber_name == "TGC_PRD":
+            outdir.WriteTObject(MyHistoFiller.TGCPRDStationEta, MyHistoFiller.TGCPRDStationEta.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDStationPhi, MyHistoFiller.TGCPRDStationPhi.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDGasgap, MyHistoFiller.TGCPRDGasgap.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDChannel, MyHistoFiller.TGCPRDChannel.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDisStrip, MyHistoFiller.TGCPRDisStrip.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDGlobalX, MyHistoFiller.TGCPRDGlobalX.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDGlobalY, MyHistoFiller.TGCPRDGlobalY.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDGlobalZ, MyHistoFiller.TGCPRDGlobalZ.GetName())
+            outdir.WriteTObject(MyHistoFiller.TGCPRDLocalX, MyHistoFiller.TGCPRDLocalX.GetName())
+       
 
         if self.__chamber_name == "MM":
             outdir.WriteTObject(MyHistoFiller.mmGlobalX, MyHistoFiller.mmGlobalX.GetName())
diff --git a/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeDigitHistograms_withSel.py b/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeDigitHistograms_withSel.py
index a35db0ab119bf670e76cd21737930fc63e266640..ddd48a2c944f257458d632c363dcd93252edf82c 100644
--- a/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeDigitHistograms_withSel.py
+++ b/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeDigitHistograms_withSel.py
@@ -7,7 +7,7 @@ import math
 from DCubeHistograms import MyHistoFiller
 
 if __name__ == "__main__":
-    parser = argparse.ArgumentParser(prog='createDCubeSimHistograms', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser = argparse.ArgumentParser(prog='createDCubeDigitHistograms', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
     parser.add_argument('-i', '--inputFile', help='choose input ROOT file', default='NSWPRDValAlg.digi.ntuple.root', type=str)
     parser.add_argument('-o', '--outputFile', help='choose output ROOT file', default='NSWPRDValAlg.digi.dcube.root', type=str)
     parser.add_argument('--doCSC', help='turn off CSC if using Run4 input ROOT file', default=False, action='store_true')
@@ -63,8 +63,13 @@ if __name__ == "__main__":
     #Filling
     for i in range(inputTree.GetEntries()):
         inputTree.GetEntry(i)
-        cschists = []
-        tgchists = []
+        cscDigitHists = []
+        cscSDOHists = []
+        cscRDOHists = []
+        tgcDigitHists = []
+        tgcSDOHists = []
+        tgcRDOHists = []
+
 
         # CSCs
         if Options.doCSC == True:
@@ -80,9 +85,19 @@ if __name__ == "__main__":
             else:
                 csc_sector_sel = lambda s: s.Digits_CSC_stationPhi[ncscDigit] == CSC_sector
 
-            for ncscDigit in range(0,len(inputTree.Digits_CSC_truth_localPosX)):
-                cschists += [MyHistoFiller( chamber_name = "CSC_Digit", eta_sel = csc_eta_sel, sector_sel = csc_sector_sel )]
-                cschists[ncscDigit].fill(inputTree, ncscDigit)
+            for ncscDigit in range(0,len(inputTree.Digits_CSC_localPosX)):
+                cscDigitHists += [MyHistoFiller( chamber_name = "CSC_Digit", eta_sel = csc_eta_sel, sector_sel = csc_sector_sel )]
+                cscDigitHists[ncscDigit].fill(inputTree, ncscDigit)
+
+            for ncscSDO in range(0,len(inputTree.SDO_CSC_localPosX)):
+                cscSDOHists += [MyHistoFiller( chamber_name = "CSC_SDO", eta_sel = csc_eta_sel, sector_sel = csc_sector_sel )]
+                cscSDOHists[ncscSDO].fill(inputTree, ncscSDO)
+                
+            for ncscRDO in range(0,len(inputTree.RDO_CSC_localPosX)):
+                cscRDOHists += [MyHistoFiller( chamber_name = "CSC_RDO", eta_sel = csc_eta_sel, sector_sel = csc_sector_sel )]
+                cscRDOHists[ncscRDO].fill(inputTree, ncscRDO)
+                
+
                 
         # TGCs
         if TGC_eta == "positive":
@@ -98,14 +113,34 @@ if __name__ == "__main__":
             tgc_sector_sel = lambda s: s.Digits_TGC_stationPhi[ntgcDigit] == TGC_sector
 
         for ntgcDigit in range(0,len(inputTree.Digits_TGC_localPosX)):
-            tgchists += [MyHistoFiller( chamber_name = "TGC_Digit", eta_sel = tgc_eta_sel, sector_sel = tgc_sector_sel )]
-            tgchists[ntgcDigit].fill(inputTree, ntgcDigit)
+            tgcDigitHists += [MyHistoFiller( chamber_name = "TGC_Digit", eta_sel = tgc_eta_sel, sector_sel = tgc_sector_sel )]
+            tgcDigitHists[ntgcDigit].fill(inputTree, ntgcDigit)
+            
+        for ntgcSDO in range(0,len(inputTree.SDO_TGC_localPosX)):
+            tgcSDOHists += [MyHistoFiller( chamber_name = "TGC_SDO", eta_sel = tgc_eta_sel, sector_sel = tgc_sector_sel )]
+            tgcSDOHists[ntgcSDO].fill(inputTree, ntgcSDO)
+            
+        for ntgcRDO in range(0,len(inputTree.RDO_TGC_localPosX)):
+            tgcRDOHists += [MyHistoFiller( chamber_name = "TGC_RDO", eta_sel = tgc_eta_sel, sector_sel = tgc_sector_sel )]
+            tgcRDOHists[ntgcRDO].fill(inputTree, ntgcRDO)
 
     #Writing
     if Options.doCSC == True:
-        cschist = MyHistoFiller( chamber_name = "CSC_Digit", eta_sel = None, sector_sel = None )
-        cschist.write(ODir)
+        cscDigitHist = MyHistoFiller( chamber_name = "CSC_Digit", eta_sel = None, sector_sel = None )
+        cscDigitHist.write(ODir)
+        
+        cscSDOHist = MyHistoFiller( chamber_name = "CSC_SDO", eta_sel = None, sector_sel = None )
+        cscSDOHist.write(ODir)
+        
+        cscRDOHist = MyHistoFiller( chamber_name = "CSC_RDO", eta_sel = None, sector_sel = None )
+        cscRDOHist.write(ODir)
+    
+    tgcDigitHist = MyHistoFiller( chamber_name = "TGC_Digit", eta_sel = None, sector_sel = None )
+    tgcDigitHist.write(ODir)
+    
+    tgcSDOHist = MyHistoFiller( chamber_name = "TGC_SDO", eta_sel = None, sector_sel = None )
+    tgcSDOHist.write(ODir)
     
-    tgchist = MyHistoFiller( chamber_name = "TGC_Digit", eta_sel = None, sector_sel = None )
-    tgchist.write(ODir)
+    tgcRDOHist = MyHistoFiller( chamber_name = "TGC_RDO", eta_sel = None, sector_sel = None )
+    tgcRDOHist.write(ODir)
     
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeRecoHistograms_withSel.py b/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeRecoHistograms_withSel.py
new file mode 100644
index 0000000000000000000000000000000000000000..a883dc90011de836d77a3f72139bca9725fd62af
--- /dev/null
+++ b/MuonSpectrometer/MuonValidation/MuonPRDTest/scripts/createDCubeRecoHistograms_withSel.py
@@ -0,0 +1,114 @@
+# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+
+# this script can be used to create DCube histograms from the output ntuples of NSWPRDValAlg
+
+import os, sys, ROOT, argparse
+import math
+from DCubeHistograms import MyHistoFiller
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(prog='createDCubeRecoHistograms', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser.add_argument('-i', '--inputFile', help='choose input ROOT file', default='NSWPRDValAlg.reco.ntuple.root', type=str)
+    parser.add_argument('-o', '--outputFile', help='choose output ROOT file', default='NSWPRDValAlg.reco.dcube.root', type=str)
+    parser.add_argument('--doCSC', help='turn off CSC if using Run4 input ROOT file', default=True, action='store_true')
+    parser.add_argument('--CSCsel', help='Choose eta_sector selections for CSC, e.g. positive_1 for positive eta and sector 1, None_None for no selection', default='None_None', type=str)
+    parser.add_argument('--TGCsel', help='Choose eta_sector selections for TGC, e.g. positive_1 for positive eta and sector 1, None_None for no selection', default='None_None', type=str)
+
+    Options = parser.parse_args()
+
+    ROOT.gROOT.SetBatch(True)
+
+    if not os.path.exists(Options.inputFile):
+        print ('ERROR: File %s does not exist'%Options.inputFile)
+        sys.exit(1)
+
+    inputFile = ROOT.TFile(Options.inputFile, "READ")
+    if not inputFile:
+        print ('ERROR: Failed to open file %s'%Options.inputFile)
+        sys.exit(1)
+    inputTree = inputFile.Get("NSWValTree")
+    if not inputTree:
+        print ('ERROR: NSWValTree does not exist in file %s'%Options.inputFile)
+        sys.exit(1)
+
+    nEntries = inputTree.GetEntries()
+    if nEntries==0:
+        print ('ERROR: NSWValTree of file %s has 0 entries'%Options.inputFile)
+        sys.exit(1)
+
+    outputFile = ROOT.TFile(Options.outputFile, "RECREATE")
+    if not outputFile:
+        print ('ERROR: Failed to open file %s'%Options.outputFile)
+        sys.exit(1)
+
+    outputFile.cd()
+    outputFile.mkdir("reconstruction/")
+    ODir = outputFile.GetDirectory("reconstruction/")
+    ODir.cd()
+    
+    CSCselections = Options.CSCsel.split("_")
+    CSC_eta = CSCselections[0]
+    if CSCselections[1] != "None":
+        CSC_sector = int (CSCselections[1])
+    else:
+        CSC_sector = CSCselections[1]
+        
+    TGCselections = Options.TGCsel.split("_")
+    TGC_eta = TGCselections[0]
+    if TGCselections[1] != "None":
+        TGC_sector = int (TGCselections[1])
+    else:
+        TGC_sector = TGCselections[1]
+        
+    #Filling
+    for i in range(inputTree.GetEntries()):
+        inputTree.GetEntry(i)
+        cscPRDHists = []
+        tgcPRDHists = []
+
+        # CSCs
+        if Options.doCSC == True:
+            if CSC_eta == "positive":
+                csc_eta_sel = lambda t: t.PRD_CSC_stationEta[ncscPRD] >= 0
+            elif CSC_eta == "negative":
+                csc_eta_sel = lambda t: t.PRD_CSC_stationEta[ncscPRD] < 0
+            else:
+                csc_eta_sel = lambda t: t.PRD_CSC_stationEta[ncscPRD] < 9
+
+            if CSC_sector == "None":
+                csc_sector_sel = lambda s: s.PRD_CSC_stationPhi[ncscPRD] < 10
+            else:
+                csc_sector_sel = lambda s: s.PRD_CSC_stationPhi[ncscPRD] == CSC_sector
+
+            for ncscPRD in range(0,len(inputTree.PRD_CSC_localPosX)):
+                cscPRDHists += [MyHistoFiller( chamber_name = "CSC_PRD", eta_sel = csc_eta_sel, sector_sel = csc_sector_sel )]
+                cscPRDHists[ncscPRD].fill(inputTree, ncscPRD)
+                
+
+                
+        # TGCs
+        if TGC_eta == "positive":
+            tgc_eta_sel = lambda t: t.PRD_TGC_stationEta[ntgcPRD] >= 0
+        elif TGC_eta == "negative":
+            tgc_eta_sel = lambda t: t.PRD_TGC_stationEta[ntgcPRD] < 0
+        else:
+            tgc_eta_sel = lambda t: t.PRD_TGC_stationEta[ntgcPRD] < 9
+
+        if TGC_sector == "None":
+            tgc_sector_sel = lambda s: s.PRD_TGC_stationPhi[ntgcPRD] < 51
+        else:
+            tgc_sector_sel = lambda s: s.PRD_TGC_stationPhi[ntgcPRD] == TGC_sector
+            
+        for ntgcPRD in range(0,len(inputTree.PRD_TGC_localPosX)):
+            tgcPRDHists += [MyHistoFiller( chamber_name = "TGC_PRD", eta_sel = tgc_eta_sel, sector_sel = tgc_sector_sel )]
+            tgcPRDHists[ntgcPRD].fill(inputTree, ntgcPRD)
+
+
+    #Writing
+    if Options.doCSC == True:
+        cscPRDHist = MyHistoFiller( chamber_name = "CSC_PRD", eta_sel = None, sector_sel = None )
+        cscPRDHist.write(ODir)
+    
+    tgcPRDHist = MyHistoFiller( chamber_name = "TGC_PRD", eta_sel = None, sector_sel = None )
+    tgcPRDHist.write(ODir)
+    
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonValidation/MuonPRDTest/src/NSWPRDValAlg.h b/MuonSpectrometer/MuonValidation/MuonPRDTest/src/NSWPRDValAlg.h
index 0089d7461b8310cc836fb2154564023965ea833c..71e0bc6af4117dd79afd1831ae98badf115944d8 100644
--- a/MuonSpectrometer/MuonValidation/MuonPRDTest/src/NSWPRDValAlg.h
+++ b/MuonSpectrometer/MuonValidation/MuonPRDTest/src/NSWPRDValAlg.h
@@ -146,7 +146,7 @@ class NSWPRDValAlg: public AthAlgorithm
   Gaudi::Property<std::string> m_TGC_SDOContainerName{this, "TGC_SDOContainerName", "TGC_SDO" };
   Gaudi::Property<std::string> m_TGC_DigitContainerName{this, "TGC_DigitContainerName","TGC_DIGITS"  };
   Gaudi::Property<std::string> m_TGC_RDOContainerName{this,"TGC_RDOContainerName", "TGCRDO" };
-  Gaudi::Property<std::string> m_TGC_PRDContainerName{this, "TGC_PRDContainerName","TGCPRD" };
+  Gaudi::Property<std::string> m_TGC_PRDContainerName{this, "TGC_PRDContainerName","TGC_Measurements" };
 
   // Matching algorithm