00001 #include <iostream>
00002 using std::cout;
00003 using std::endl;
00004
00005 #include "TClonesArray.h"
00006 #include "CalDetSI/Helpers.h"
00007 #include "Navigation/NavKey.h"
00008 #include "Conventions/Detector.h"
00009 #include "Conventions/ElecType.h"
00010 #include "Conventions/StripEnd.h"
00011 #include "RerootExodus/RerootExodus.h"
00012
00013 NavKey CalHelpers::KeyFromPlane(const CandDigitHandle* cdh)
00014 {
00015 return GetPlane(*cdh);
00016 }
00017
00018 NavKey CalHelpers::KeyFromStrip(const CandDigitHandle* cdh)
00019 {
00020 return GetBestStrip(*cdh);
00021 }
00022
00023 NavKey CalHelpers::KeyFromEnd(const CandDigitHandle* cdh)
00024 {
00025 return GetBestEnd(*cdh);
00026 }
00027
00028 NavKey CalHelpers::KeyFromTime(const CandDigitHandle* cdh)
00029 {
00030 return cdh->GetPlexSEIdAltL().GetBestItem().GetTime();
00031 }
00032
00033 NavKey CalHelpers::KeyFromDigitTime(const CandDigitHandle* cdh)
00034 {
00035 return cdh->GetTime();
00036 }
00037
00038
00039 NavKey CalHelpers::KeyFromCrate(const CandDigitHandle* cdh)
00040 {
00041 return cdh->GetChannelId().GetCrate();
00042 }
00043
00044 NavKey CalHelpers::KeyFromVarc(const CandDigitHandle* cdh)
00045 {
00046 return cdh->GetChannelId().GetVarcId();
00047 }
00048
00049
00050 CalHelpers::MCDigit::MCDigit():
00051
00052 fMCPlane(0),
00053 fMCExtr(0),
00054 fMCCell(0),
00055 fMCTPos(0.),
00056 fMCRAWPE(0.),
00057 fMCCorrPE(0.),
00058 fMCTDC(0.),
00059 fMCTubePixel(0),
00060 fMCSignalPE(0.),
00061 fMCInitialTDC(0.),
00062 fMCAveDistTrue(0.),
00063 fMCHitBits(0),
00064 fMCCellPos(0),
00065 fMCPlanePos(0),
00066 fMCSumETrue(0)
00067 {}
00068
00069 CalHelpers::MCDigit::MCDigit(const PlexStripEndId pse, REROOT_FLSDigit flsdig)
00070 {
00071 fMCPlane = flsdig.IPln();
00072 fMCExtr = flsdig.IExtr();
00073 fMCCell = flsdig.ICell();
00074 fMCTPos = flsdig.TPos();
00075 fMCHitBits = flsdig.HitBits();
00076 fMCCellPos = flsdig.CellPos();
00077 fMCPlanePos = flsdig.PlanePos();
00078
00079 if(pse.GetEnd()==StripEnd::kNegative){
00080 fMCRAWPE = flsdig.RawA();
00081 fMCCorrPE = flsdig.CorrA();
00082 fMCTDC = flsdig.TDCA();
00083 fMCTubePixel = flsdig.TubePixelA();
00084 fMCSignalPE = flsdig.SignalPEA();
00085 fMCInitialTDC = flsdig.InitialTDCA();
00086 fMCAveDistTrue = flsdig.AveDistTrueA();
00087 }
00088 else{
00089 fMCRAWPE = flsdig.RawB();
00090 fMCCorrPE = flsdig.CorrB();
00091 fMCTDC = flsdig.TDCB();
00092 fMCTubePixel = flsdig.TubePixelB();
00093 fMCSignalPE = flsdig.SignalPEB();
00094 fMCInitialTDC = flsdig.InitialTDCB();
00095 fMCAveDistTrue = flsdig.AveDistTrueB();
00096 }
00097
00098 fMCSumETrue=flsdig.SumETrue();
00099 if(fMCRAWPE<=0){
00100 cout<<"MCDigit Constructor: fMCRAWPE <= 0"<<endl
00101 <<"flsdig.RawA(): "<<flsdig.RawA()<<endl
00102 <<"flsdig.RawB(): "<<flsdig.RawB()<<endl
00103 <<"Plane: "<<pse.GetPlane()<<endl
00104 <<"Strip: "<<pse.GetStrip()<<endl
00105 <<"Strip End: "<<pse.GetEnd()<<endl
00106 <<endl;
00107 }
00108 }
00109
00110 CalHelpers::MCDigit::MCDigit(const MCDigit &mcd):
00111 fMCPlane(mcd.fMCPlane),
00112 fMCExtr(mcd.fMCExtr),
00113 fMCCell(mcd.fMCCell),
00114 fMCTPos(mcd.fMCTPos),
00115 fMCRAWPE(mcd.fMCRAWPE),
00116 fMCCorrPE(mcd.fMCCorrPE),
00117 fMCTDC(mcd.fMCTDC),
00118 fMCTubePixel(mcd.fMCTubePixel),
00119 fMCSignalPE(mcd.fMCSignalPE),
00120 fMCInitialTDC(mcd.fMCInitialTDC),
00121 fMCAveDistTrue(mcd.fMCAveDistTrue),
00122 fMCHitBits(mcd.fMCHitBits),
00123 fMCCellPos(mcd.fMCCellPos),
00124 fMCPlanePos(mcd.fMCPlanePos),
00125 fMCSumETrue(mcd.fMCSumETrue)
00126 {}
00127
00128
00129
00130 CalHelpers::MCDigit::~MCDigit() {}
00131
00132 CalHelpers::MCDigitMap::MCDigitMap():
00133 fMCDigitMap()
00134 {}
00135
00136 CalHelpers::MCDigitMap::~MCDigitMap() {}
00137
00138 void CalHelpers::MCDigitMap::MakeMCDigitMap()
00139 {
00140
00141 static const TClonesArray *mdcl = RerootExodus::GetFLSDigitList();
00142
00143 for(int i=0;i<mdcl->GetEntries();i++){
00144 const REROOT_FLSDigit *dig = dynamic_cast<const REROOT_FLSDigit *>(mdcl->At(i));
00145 if(dig == 0){
00146 continue;
00147 }
00148 PlexStripEndId psea = RerootExodus::PECAB2SEId(dig->IPln(),
00149 dig->IExtr(), dig->ICell(), 0);
00150
00151 cout<<"Gave iab = 0"<<endl;
00152 cout<<"Got back stripend: "<<psea.GetEnd()<<endl;
00153
00154 MCDigit mcdig1(psea, *dig);
00155 fMCDigitMap[psea]=mcdig1;
00156 PlexStripEndId pseb = RerootExodus::PECAB2SEId(dig->IPln(),
00157 dig->IExtr(), dig->ICell(), 1);
00158
00159 cout<<"Gave iab = 1"<<endl;
00160 cout<<"Got back stripend: "<<pseb.GetEnd()<<endl;
00161
00162 MCDigit mcdig2(pseb, *dig);
00163 fMCDigitMap[pseb]=mcdig2;
00164
00165 }
00166 }
00167
00168
00169
00170
00171
00172