00001 //---------------------------------------------------------------------------// 00012 // 00013 #include "Trigger/MucTrigHit.h" 00014 00015 #include "Identifier/Identifier.h" 00016 #include "Identifier/MucID.h" 00017 #include "RawEvent/RawDataUtil.h" 00018 #include "RawEvent/DigiEvent.h" 00019 #include <math.h> 00020 using namespace std; 00021 00022 MucTrigHit* MucTrigHit::muc_Pointer = 0; 00023 00024 MucTrigHit* MucTrigHit::get_Muc(void) { 00025 if(!muc_Pointer) muc_Pointer = new MucTrigHit(); 00026 return muc_Pointer; 00027 } 00028 00029 MucTrigHit::MucTrigHit() 00030 { 00031 } 00032 00033 MucTrigHit::~MucTrigHit() 00034 { 00035 } 00036 00037 void MucTrigHit::getMucDigi(MucDigiCol* mucDigiCol) 00038 { 00039 //reset values 00040 for(int i =0; i<8; i++) 00041 for(int j=0; j<4; j++) 00042 for(int k=0; k<112; k++) 00043 { 00044 hitBR[i][j][k] = 0; 00045 } 00046 for(int i =0; i<2; i++) 00047 for(int j=0; j<4; j++) 00048 for(int k=0; k<4; k++) 00049 for(int l=0; l<64; l++) 00050 { 00051 hitEC[i][j][k][l] = 0; 00052 } 00053 00054 int partId, segId, gapId, stripId; 00055 MucDigiCol::iterator iDigiCol; 00056 for(iDigiCol=mucDigiCol->begin(); iDigiCol!=mucDigiCol->end(); iDigiCol++) 00057 { 00058 const Identifier ident = (*iDigiCol)->identify(); 00059 partId = MucID::part(ident); 00060 segId = MucID::seg(ident); 00061 gapId = MucID::gap(ident); 00062 stripId = MucID::strip(ident); 00063 if(partId == 1 && gapId < 4) { 00064 hitBR[segId][gapId][stripId] = 1; 00065 } 00066 if(partId == 0 && gapId <4) hitEC[0][segId][gapId][stripId] = 1; //east endcap 00067 if(partId == 2 && gapId <4) hitEC[1][segId][gapId][stripId] = 1; //west endcap 00068 } 00069 } 00070 00071 void MucTrigHit::getFastOr() 00072 { 00073 //reset values 00074 for(int i =0; i<8; i++) 00075 for(int j=0; j<4; j++) 00076 for(int k=0; k<7; k++) 00077 { 00078 foBR[i][j][k] = 0; 00079 } 00080 for(int i =0; i<2; i++) 00081 for(int j=0; j<4; j++) 00082 for(int k=0; k<4; k++) 00083 for(int l=0; l<4; l++) 00084 { 00085 foEC[i][j][k][l] = 0; 00086 } 00087 //get fastOr signal 00088 for(int i =0; i<8; i++) 00089 for(int j=0; j<4; j++) 00090 for(int k=0; k<112; k++) 00091 { 00092 if(hitBR[i][j][k]==1) { 00093 int nbox = (int) k/16; 00094 foBR[i][j][nbox] = 1; 00095 } 00096 } 00097 for(int i =0; i<2; i++) 00098 for(int j=0; j<4; j++) 00099 for(int k=0; k<4; k++) 00100 for(int l=0; l<64; l++) 00101 { 00102 if(hitEC[i][j][k][l] == 1) { 00103 int nbox = (int) l/16; 00104 foEC[i][j][k][nbox] = 1; 00105 } 00106 } 00107 }