X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HMPID%2FAliHMPIDDigit.cxx;h=712a21798f4a31292cec0dee3c9cdaf87fcc3116;hb=6fc3dfc08ab2e4943b1b70379ac1dc22e202c29b;hp=3000c92d1c79237ceb5ad9518008b60d2bc628d8;hpb=e4a3eae89e27d19b9c7ffa149904bb34ad60cd8c;p=u%2Fmrichter%2FAliRoot.git diff --git a/HMPID/AliHMPIDDigit.cxx b/HMPID/AliHMPIDDigit.cxx index 3000c92d1c7..712a21798f4 100644 --- a/HMPID/AliHMPIDDigit.cxx +++ b/HMPID/AliHMPIDDigit.cxx @@ -13,20 +13,39 @@ // * provided "as is" without express or implied warranty. * // ************************************************************************** -#include "AliHMPIDDigit.h" //class header -#include //Hit2Sdi() -#include //Draw() -ClassImp(AliHMPIDDigit) - -const Float_t AliHMPIDDigit::fMinPcX[]={0,SizePcX() + SizeDead(),0,SizePcX() + SizeDead(), 0,SizePcX() + SizeDead()}; -const Float_t AliHMPIDDigit::fMinPcY[]={0, 0,SizePcY()+SizeDead(),SizePcY() + SizeDead(),2*(SizePcY()+SizeDead()),2*(SizePcY()+SizeDead())}; - -const Float_t AliHMPIDDigit::fMaxPcX[]={SizePcX(),SizeAllX(),SizePcX(),SizeAllX(),SizePcX(),SizeAllX()}; -const Float_t AliHMPIDDigit::fMaxPcY[]={SizePcY(),SizePcY(),SizeAllY() - SizePcY(),SizeAllY() - SizePcY(),SizeAllY(),SizeAllY()}; +#include "AliHMPIDDigit.h" //class header +#include //WriteRaw() +#include //Draw() +#include //Draw() +#include //WriteRaw() +#include "AliHMPIDParam.h" +#include //WriteRaw() +#include "Riostream.h" //WriteRaw() +#include "AliFstream.h" +ClassImp(AliHMPIDDigit) /* -Preface: all geometrical information (like left-right sides) is reported as seen from electronic side. + Preface: all geometrical information (like left-right sides) is reported as seen from electronic side. + + d10 d1 d10 d1 + _______________ _______________ +r1 | | | |126.16 r24 + | 4 | | 5 | + | | | | + |_______________| |_______________|85.84 + _______________ _______________ + | | | |83.24 + | 2 | | 3 | + | | | | + |_______________| |_______________|42.92 + _______________ _______________ + | | | |40.32 + | 0 | | 1 | + | | | | +r24 |_______________| |_______________|0 r1 //updated: 15/02/2008 + 0 64.0 66.6 130.6 //corrected: 05/08/2009 clm + The DDL file starts with common header which size and structure is standartized and mandatory for all detectors. @@ -76,64 +95,40 @@ HMPID raw word is 32 bits with the structure: void AliHMPIDDigit::Draw(Option_t*) { // TMarker *pMark=new TMarker(LorsX(),LorsY(),25); pMark->SetMarkerColor(kGreen);pMark->Draw(); - TBox *pad = new TBox(LorsX()-0.5*SizePadX(),LorsY()-0.5*SizePadY(),LorsX()+0.5*SizePadX(),LorsY()+0.5*SizePadY()); - pad->SetFillStyle(0);pad->SetLineColor(kGreen); - pad->Draw(); -} -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void AliHMPIDDigit::Hit2Sdi(AliHMPIDHit *pHit,TClonesArray *pSdiLst) -{ -// Creates a list of sdigits out of provided hit -// Arguments: pHit- hit -// Returns: none - - Int_t iSdiCnt=pSdiLst->GetEntries(); //list of sdigits contains sdigits from previous ivocations of Hit2Sdi, do not override them - AliHMPIDDigit dig; - for(Int_t i=0;i<9;i++){ //affected pads loop - dig.Set(pHit,i); //c,q,tid,x,y create tmp sdigit for pad i around hit position - if(dig.PadPcX()==-1) continue; - new((*pSdiLst)[iSdiCnt++]) AliHMPIDDigit(dig); + TBox *pad = new + +TBox(LorsX()-0.5*AliHMPIDParam::SizePadX(),LorsY()-0.5*AliHMPIDParam::SizePadY(),LorsX()+0.5*AliHMPIDParam::SizePadX(),LorsY()+0.5*AliHMPIDParam::SizePadY()); + TPolyLine *line=new TPolyLine(5); + line->SetPoint(0,LorsX()-0.5*AliHMPIDParam::SizePadX(),LorsY()-0.5*AliHMPIDParam::SizePadY()); + line->SetPoint(1,LorsX()-0.5*AliHMPIDParam::SizePadX(),LorsY()+0.5*AliHMPIDParam::SizePadY()); + line->SetPoint(2,LorsX()+0.5*AliHMPIDParam::SizePadX(),LorsY()+0.5*AliHMPIDParam::SizePadY()); + line->SetPoint(3,LorsX()+0.5*AliHMPIDParam::SizePadX(),LorsY()-0.5*AliHMPIDParam::SizePadY()); + line->SetPoint(4,LorsX()-0.5*AliHMPIDParam::SizePadX(),LorsY()-0.5*AliHMPIDParam::SizePadY()); + Int_t slice=(Int_t)fQ/20; + switch(slice){ + case 0: pad->SetFillColor(kBlue); break; + case 1: pad->SetFillColor(kBlue+4); break; + case 2: pad->SetFillColor(kCyan); break; + case 3: pad->SetFillColor(kCyan+4); break; + case 4: pad->SetFillColor(kGreen); break; + case 5: pad->SetFillColor(kGreen+4); break; + case 6: pad->SetFillColor(kYellow); break; + case 7: pad->SetFillColor(kYellow+4); break; + default: pad->SetFillColor(kRed); break; } -}//Hit2Sdi() + pad->SetUniqueID((Int_t)fQ); + pad->Draw();line->Draw(); +} //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void AliHMPIDDigit::Print(Option_t*)const +void AliHMPIDDigit::Print(Option_t *opt)const { // Print current digit // Arguments: option string not used // Returns: none - UInt_t w32; Raw(w32); - Printf("DIG:(%7.3f,%7.3f) Q=%8.3f (ch=%1i,pc=%1i,x=%2i,y=%2i) TID=(%5i,%5i,%5i) ddl=%i raw=0x%x (r=%2i,d=%2i,a=%2i) %s", - LorsX(),LorsY(),Q(), A2C(fPad),A2P(fPad),A2X(fPad),A2Y(fPad), - fTracks[0],fTracks[1],fTracks[2],DdlIdx(),w32,Row(),Dilogic(),Addr(), - (IsOverTh(Q()))?"":"!!!"); + UInt_t w32; Int_t ddl,r,d,a; + Raw(w32,ddl,r,d,a); + Printf("%sDIG:(ch=%1i,pc=%1i,x=%2i,y=%2i) (%7.3f,%7.3f) Q=%8.3f TID=(%5i,%5i,%5i) raw=0x%x (ddl=%2i,r=%2i,d=%2i,a=%2i) %s", + opt, AliHMPIDParam::A2C(fPad),AliHMPIDParam::A2P(fPad),AliHMPIDParam::A2X(fPad),AliHMPIDParam::A2Y(fPad),LorsX(),LorsY(), Q(), + fTracks[0],fTracks[1],fTracks[2],w32,ddl,r,d,a, (AliHMPIDParam::IsOverTh(Q()))?"":"below thr"); } //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void AliHMPIDDigit::PrintSize() -{ -// Print all segmentaion related sizes -// Arguments: none -// Returns: none - Printf("-->pad =(%6.2f,%6.2f) cm dead zone %.2f cm\n" - "-->PC =(%6.2f,%6.2f) cm (%3i,%3i) pads\n" - "-->all PCs=(%6.2f,%6.2f) cm (%3i,%3i) pads", - SizePadX(),SizePadY(),SizeDead(), - SizePcX() ,SizePcY() ,kPadPcX ,kPadPcY, - SizeAllX(),SizeAllY(),kPadAllX,kPadAllY); -} -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void AliHMPIDDigit::Test() -{ - AliHMPIDDigit d1,d2; Int_t ddl;UInt_t w32; - for(Int_t i=0;i<10000;i++){ - Int_t ch=Int_t(gRandom->Rndm()*7); - Int_t pc=Int_t(gRandom->Rndm()*6); - Int_t px=Int_t(gRandom->Rndm()*80); - Int_t py=Int_t(gRandom->Rndm()*48); - d1.Manual2(ch,pc,px,py); - ddl=d1.Raw(w32); d2.Raw(ddl,w32); - if(d1.Compare(&d2)) Printf("Problem!!!"); - } - Printf("OK"); -}//Test() -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -