CDCrossTalker Class Reference

#include <CDCrossTalker.h>

List of all members.

Public Member Functions

 CDCrossTalker (std::map< Int_t, CandStripHandle >, Float_t opt, Int_t cosmic)
std::map< Int_t, CandStripHandleGetCleanStripMap ()
void GetXTalkStripInfo (TClonesArray *)
Int_t GetNumHitsRemoved ()
std::map< Int_t, CandStripHandleGetXTalkStripMap ()
std::map< Int_t, Int_t > GetXTalkSourceStrips ()
Int_t SetMap (std::map< Int_t, CandStripHandle > stripmap)
Int_t SetOption (Float_t opt)

Private Attributes

std::map< Int_t, CandStripHandlefAllStrips
std::map< Int_t, CandStripHandlefCleanedStrips
Float_t fopt
std::map< Int_t, CandStripHandlefXTalkStrips
std::map< Int_t, Int_t > fXTalkSource
std::map< Int_t, Int_t > fNumSurround
Int_t fnum_xtalk_hits
Int_t fcosmic

Detailed Description

Definition at line 21 of file CDCrossTalker.h.


Constructor & Destructor Documentation

CDCrossTalker::CDCrossTalker ( std::map< Int_t, CandStripHandle stripmap,
Float_t  opt,
Int_t  cosmic 
)

Definition at line 39 of file CDCrossTalker.cxx.

References fcosmic, fnum_xtalk_hits, SetMap(), and SetOption().

00041 {
00042   this->SetMap(stripmap);
00043   this->SetOption(opt);
00044   fnum_xtalk_hits = -1;
00045   fcosmic = cosmic;
00046 }


Member Function Documentation

std::map< int, CandStripHandle > CDCrossTalker::GetCleanStripMap (  ) 

Definition at line 66 of file CDCrossTalker.cxx.

References PlexStripEndId::Build18BitPlnStripKey(), fAllStrips, fCleanedStrips, fcosmic, fnum_xtalk_hits, fNumSurround, fopt, fXTalkSource, fXTalkStrips, PlexPixelSpotId::GetPixel(), PlexHandle::GetPixelSpotId(), PlexPixelSpotId::GetSpot(), PlexPixelSpotId::GetTube(), Calibrator::Instance(), Detector::kCalDet, Msg::kDebug, StripEnd::kNegative, CalDigitType::kPE, StripEnd::kPositive, ElecType::kQIE, Msg::kWarning, MSG, and CalScheme::Reset().

Referenced by GetXTalkSourceStrips(), GetXTalkStripInfo(), and GetXTalkStripMap().

00067 {
00068   if(fnum_xtalk_hits!=-1) return fCleanedStrips;
00069 
00070   if(fAllStrips.empty()){
00071     MSG("CDCrossTalker",Msg::kWarning)
00072       <<"CDCrossTalker: No StripMap Set"<<endl; 
00073     return fCleanedStrips;
00074   }
00075   
00076   if(fopt==-1) {
00077     MSG("CDCrossTalker",Msg::kWarning)
00078       << "CDCrossTalker: No Options Set" << endl; 
00079     return fCleanedStrips;
00080   }
00081 
00082   fnum_xtalk_hits = 0;
00083 
00084   float event[60][48];
00085   float crosstalkhits[60][48];
00086   int crosstalkhitssourceplane[60][48];
00087   int crosstalkhitssourcestrip[60][48];
00088   int crosstalkhitssourcepixelone[60][48];
00089   int crosstalkhitssourcepixeltwo[60][48];
00090   int crosstalkhitssourcepixel[60][48];
00091   int crosstalkhitspixel[60][48];
00092   int crosstalkhitssourcespot[60][48];
00093   int crosstalknumxhits[60][48];
00094   int otubematrix[60][48];
00095   int opixelmatrix[60][48];
00096 
00097   int ospotmatrix[60][48];
00098   double otimematrix[60][48];
00099 
00100   //initialise arrays
00101   for (int ij=0;ij<60;ij++){
00102     for (int jk=0;jk<48;jk++){
00103       //move here
00104       event[ij][jk]=0;
00105       crosstalkhits[ij][jk]=0;
00106       crosstalkhitssourceplane[ij][jk]=-1;
00107       crosstalkhitssourcestrip[ij][jk]=-1;
00108       crosstalkhitssourcepixelone[ij][jk]=-1;
00109       crosstalkhitssourcepixeltwo[ij][jk]=-1;
00110       crosstalkhitssourcepixel[ij][jk]=-1;
00111       crosstalkhitspixel[ij][jk]=-1;
00112       crosstalkhitssourcespot[ij][jk]=-1;
00113       crosstalknumxhits[ij][jk]=-1;
00114       otubematrix[ij][jk]=0;
00115       opixelmatrix[ij][jk]=-10;
00116       ospotmatrix[ij][jk]=0;
00117       otimematrix[ij][jk]=0;
00118     }
00119   }
00120   
00121   map<int,CandStripHandle>::iterator stripIter = fAllStrips.begin();
00122   map<int,CandStripHandle>::iterator stripEnd = fAllStrips.end();
00123 
00124   //get a reference to the calibrator
00125   Calibrator& calibrator=Calibrator::Instance();
00126 
00127   const VldContext *vc = stripIter->second.GetVldContext();
00128   if(stripIter!=stripEnd) calibrator.Reset(*vc);
00129   PlexHandle plexHand(*vc);
00130   
00131   while(stripIter!=stripEnd){
00132 
00133     bool IsQIE[2] = {false,false};
00134     TIter cdhIter(stripIter->second.GetDaughterIterator());
00135     while(CandDigitHandle *cdh = dynamic_cast<CandDigitHandle*>(cdhIter())){
00136       if(cdh->GetPlexSEIdAltL().GetBestSEId().GetEnd()==StripEnd::kNegative
00137          &&cdh->GetChannelId().GetElecType()==ElecType::kQIE) IsQIE[0]=true;
00138       if(cdh->GetPlexSEIdAltL().GetBestSEId().GetEnd()==StripEnd::kPositive
00139          &&cdh->GetChannelId().GetElecType()==ElecType::kQIE) IsQIE[1]=true;
00140     }
00141   
00142     if(IsQIE[0]) MSG("CDCrossTalker",Msg::kDebug) <<"QIE digit end 1" << endl; 
00143     if(IsQIE[1]) MSG("CDCrossTalker",Msg::kDebug) <<"QIE digit end 2" << endl; 
00144 
00145 //     RawChannelId rcid_neg(stripIter->second.GetStripEndId(StripEnd::kNegative).GetEncoded());
00146 //     RawChannelId rcid_pos(stripIter->second.GetStripEndId(StripEnd::kPositive).GetEncoded());
00147 //     if(rcid_neg.GetElecType()==ElecType::kQIE) {
00148 //       MSG("CDCrossTalker",Msg::kDebug) << "QIE digit neg " 
00149 //                                     << rcid_neg.GetCrate()
00150 //                                     << endl;
00151 //     }
00152 //     if(rcid_pos.GetElecType()==ElecType::kQIE) {
00153 
00154 //       MSG("CDCrossTalker",Msg::kDebug) << "QIE digit pos " 
00155 //                                     << rcid_pos.GetCrate()
00156 //                                     << endl;
00157 //     }
00158 
00159     PlexPixelSpotId spotIdNeg = plexHand.GetPixelSpotId(stripIter->second.GetStripEndId(StripEnd::kNegative));
00160     PlexPixelSpotId spotIdPos = plexHand.GetPixelSpotId(stripIter->second.GetStripEndId(StripEnd::kPositive));
00161     
00162     int plane = stripIter->second.GetPlane();
00163     int strip = stripIter->second.GetStrip();
00164     
00165     if(plane<=59){    
00166       
00167       if(stripIter->second.GetNDigit(StripEnd::kNegative)>0&&!IsQIE[0]){
00168 
00169         int end = StripEnd::kNegative;
00170         float pe = stripIter->second.GetCharge(CalDigitType::kPE,
00171                                                StripEnd::kNegative);
00172         int tube = spotIdNeg.GetTube();
00173         int pixel = spotIdNeg.GetPixel();
00174         int spot = spotIdNeg.GetSpot();
00175         double time = stripIter->second.GetTime(StripEnd::kNegative);
00176 
00177         event[plane][(end-1)*24 + strip] = pe;
00178         otubematrix[plane][(end-1)*24 + strip] = tube;
00179         opixelmatrix[plane][(end-1)*24 + strip] = pixel;
00180         ospotmatrix[plane][(end-1)*24 + strip] = spot;
00181         otimematrix[plane][(end-1)*24 + strip] = time;
00182       }
00183 
00184       if(stripIter->second.GetNDigit(StripEnd::kPositive)>0&&!IsQIE[1]){
00185         int end = StripEnd::kPositive;
00186         float pe = stripIter->second.GetCharge(CalDigitType::kPE,
00187                                                StripEnd::kPositive);
00188         int tube = spotIdPos.GetTube();
00189         int pixel = spotIdPos.GetPixel();
00190         int spot = spotIdPos.GetSpot();
00191         double time = stripIter->second.GetTime(StripEnd::kPositive);
00192         
00193         event[plane][(end-1)*24 + strip] = pe;
00194         otubematrix[plane][(end-1)*24 + strip] = tube;
00195         opixelmatrix[plane][(end-1)*24 + strip] = pixel;
00196         ospotmatrix[plane][(end-1)*24 + strip] = spot;
00197         otimematrix[plane][(end-1)*24 + strip] = time;
00198       }   
00199     }
00200     
00201     stripIter++;
00202     
00203   }
00204   
00205   int backplaneflag[200];
00206   int largestbutwrongpixelflag[200];
00207   int refpixel[200];
00208   //int nearby[8];
00209   int pottube[200]; 
00210   int potpixelone[200];
00211   int potpixeltwo[200];
00212   int potspotone[200]; 
00213   int potspottwo[200];
00214   int hitnum=0;
00215   int sider[200];
00216   int planeseq[200];
00217   int hitplane[200];
00218   int hitstrip[200];
00219   double timersq[200];
00220 
00221   float sumadconeplone;
00222   float sumadconepltwo;
00223   int sourcelocplaneonesidetwo;
00224   int sourcelocplaneonesideone;
00225   int sourcelocstriponesideone;
00226   int sourcelocstriponesidetwo;
00227   float sourceone[200]; 
00228   
00229   float sourceadconeplone;
00230   float sourceadconepltwo;
00231   float sourceadctwoplone;
00232   float sourceadctwopltwo;
00233   float sumadctwoplone;
00234   float sumadctwopltwo;
00235   
00236   float sourcetwo[200];   
00237   int sourcelocplanetwosidetwo;
00238   int sourcelocplanetwosideone;
00239   int sourcelocstriptwosideone; 
00240   int sourcelocstriptwosidetwo;
00241   int sourcespotonepltwo;
00242   int sourcespotoneplone;
00243   int sourcespottwopltwo;
00244   int sourcespottwoplone;  
00245   float surroundsumone;
00246   float surroundsumtwo; 
00247   int topplaneone;
00248   int topstripone;
00249   float topeventone;
00250   int topplanetwo;
00251   int topstriptwo;
00252   float topeventtwo;
00253 
00254   // if theres more than 250 hits then this event is well shat
00255   // just get rid of it  
00256   int buggered; 
00257 
00258   for(int k=2;k<4;k++) {
00259     for(int i=k;i<60;i=i+4) {
00260       //  so i start at plane 2 (and also check plane 0) then go up
00261       // planes in steps of 4, then i go to plane 3 and repeat
00262       
00263       hitnum=0; 
00264       //int sourcecountone=0;
00265       //int sourcecounttwo=0;
00266 
00267       for (int resetter=0;resetter<200;resetter++){ 
00268         backplaneflag[resetter]=-1;
00269         largestbutwrongpixelflag[resetter]=-1;
00270         refpixel[resetter]=-1;
00271         potpixelone[resetter]=-1;
00272         potpixeltwo[resetter]=-1;
00273         potspotone[resetter]=-1;
00274         potspottwo[resetter]=-1;
00275         pottube[resetter]=-1;
00276         sider[resetter]=-1;
00277         planeseq[resetter]=-1;
00278         sourceadconeplone=-1;
00279         sourceadconepltwo=-1;
00280         sourceone[resetter]=-1;
00281         sourceadctwopltwo=-1;
00282         sourceadctwoplone=-1;
00283         sourcetwo[resetter]=-1;
00284 
00285         // one is first plane done although it is further
00286         sumadconepltwo=0;   
00287         sumadconeplone=0;   // in detector
00288         sumadctwoplone=0;
00289         sumadctwopltwo=0;
00290         sourcelocplaneonesideone=-1;
00291         sourcelocplaneonesidetwo=-1;
00292         sourcelocstriponesideone=-1;
00293         sourcelocstriponesidetwo=-1;
00294         sourcelocplanetwosidetwo=-1;
00295         sourcelocplanetwosideone=-1;
00296         sourcelocstriptwosidetwo=-1;
00297         sourcelocstriptwosideone=-1;
00298         sourcespotoneplone=-1;
00299         sourcespotonepltwo=-1;
00300         sourcespottwoplone=-1;
00301         sourcespottwopltwo=-1;
00302         timersq[resetter]=-1;
00303         buggered=-1;
00304         surroundsumone=0;
00305         surroundsumtwo=0;
00306         topplaneone=-1;
00307         topstripone=-1;
00308         topplanetwo=-1;
00309         topstriptwo=-1;
00310         topeventone=0;
00311         topeventtwo=0;
00312       }
00313       
00314       for (int dbleplaner=0;dbleplaner<4;dbleplaner=dbleplaner+2) {
00315         
00316         for(int j=0;j<48;j++) {
00317           
00318           // fills matrix 0->60 0->48 2 planes at a time 
00319      
00320           if (event[i-dbleplaner][j]!=0) {
00321             //  if (dbleplaner>0) backplaneflag[hitnum]=1;
00322             pottube[hitnum]=otubematrix[i-dbleplaner][j];
00323           
00324             //    potspotone[hitnum]=ospotmatrix[i-dbleplaner][j];
00325             hitstrip[hitnum]=j;
00326             hitplane[hitnum]=(i-dbleplaner);            
00327             timersq[hitnum]=otimematrix[i-dbleplaner][j];
00328             
00329 
00330             if (j<24) {
00331               sider[hitnum]=1;
00332               potspotone[hitnum]=ospotmatrix[i-dbleplaner][j];
00333               potpixelone[hitnum]=opixelmatrix[i-dbleplaner][j];
00334             }
00335 
00336             else {
00337               sider[hitnum]=2; 
00338               potspottwo[hitnum]=ospotmatrix[i-dbleplaner][j];
00339               potpixeltwo[hitnum]=opixelmatrix[i-dbleplaner][j];
00340             }
00341             
00342             // ok so hitnum is the number of hitstrips making the 
00343             // total possible number of crosstalk hits= (hitnum)^2
00344             
00345             MSG("CDCrossTalker",Msg::kDebug) 
00346               << "Pl: " <<hitplane[hitnum] 
00347               << " Str: " << hitstrip[hitnum] 
00348               << " Tu: " << pottube[hitnum] 
00349               << " P1: " << potpixelone[hitnum] 
00350               <<" P2: " << potpixeltwo[hitnum] 
00351               << " ADC: " << event[i-dbleplaner][j] 
00352               << " S1: " << potspotone[hitnum] 
00353               << " S2: " << potspottwo[hitnum] << endl;
00354 
00355             hitnum++;
00356           }
00357         }
00358       } // doubleplaner
00359 
00360       if (hitnum>=14 ) {
00361         buggered=1;
00362         hitnum=0; 
00363       }
00364       
00365       if(hitnum>1 && buggered!=1) { 
00366         
00367         //sourcecount is number of crosstalk hits per 2 planes including
00368         //original 'source' hit
00369         
00370         //int sourcecountone=0;
00371         //int sourcecounttwo=0;
00372         
00373         for (int f=0;f<hitnum;f++) {
00374           
00375           int matrixseqplane=hitplane[f];
00376           int matrixseqstrip=hitstrip[f];
00377           int hitser=0;
00378           //f is reference check and d is check-ee -> use f
00379           
00380           for (int d=0;d<hitnum;d++) {
00381             
00382             int matrixseqcheckeeplane=hitplane[d];
00383             int matrixseqcheckeestrip=hitstrip[d];
00384             
00385             // Start of Hi same plane crosstalk
00386             
00387             if ((pottube[f] == pottube[d])&&
00388                 (f!=d)&&(sider[f]==sider[d])&& 
00389                 (pottube[f]!=-1)&&(pottube[d]!=-1)&& 
00390                 (potpixelone[d]!=0) && (potpixeltwo[d]!=0) ) {
00391  
00392               // if ((pottube[f] == pottube[d])&&(f!=d)&&
00393               //(sider[f]==sider[d])&& 
00394               //  (pottube[f]!=-1)&&(pottube[d]!=-1)  ) {
00395               //same tube, don't double count, same side,
00396               //valid tube,valid tube, 
00397               //same plane, 
00398               //remove particles hitting two strips in plane 
00399               //in valid strip range
00400 
00401               //all these 'nots' remove a few hits at pmt edges that are
00402               //not real cos of simple +-1,+-4,+-3,+-5 formula used
00403 
00404               if(((potpixelone[f]==((potpixelone[d])-4)) && 
00405                   ((potpixelone[d])-4)>0)){
00406                 if(sider[f]==1) {
00407                   surroundsumone=surroundsumone+
00408                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00409                   hitser++;
00410                   
00411                   if (event[matrixseqcheckeeplane]
00412                       [matrixseqcheckeestrip]>topeventone) { 
00413                     topeventone=event[matrixseqcheckeeplane]
00414                       [matrixseqcheckeestrip];
00415                     topplaneone=matrixseqcheckeeplane;
00416                     topstripone=matrixseqcheckeestrip;
00417                     crosstalkhitssourcepixelone[matrixseqplane]
00418                       [matrixseqstrip] = potpixelone[d];
00419                     crosstalkhitssourcespot[matrixseqplane]
00420                       [matrixseqstrip] = potspotone[d];
00421                   } 
00422                 }
00423               }
00424 
00425               if(((potpixeltwo[f]==((potpixeltwo[d])-4)) && 
00426                   ((potpixeltwo[d])-4)>0)){
00427                 if(sider[f]==2) {
00428                   surroundsumtwo=surroundsumtwo+
00429                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00430                   hitser++;
00431                   if (event[matrixseqcheckeeplane]
00432                       [matrixseqcheckeestrip]>topeventtwo) { 
00433                     topeventtwo=event[matrixseqcheckeeplane]
00434                       [matrixseqcheckeestrip];
00435                     topplanetwo=matrixseqcheckeeplane;
00436                     topstriptwo=matrixseqcheckeestrip;
00437                     crosstalkhitssourcepixeltwo[matrixseqplane]
00438                       [matrixseqstrip] = potpixeltwo[d]; 
00439                     crosstalkhitssourcespot[matrixseqplane]
00440                       [matrixseqstrip] = potspottwo[d]; 
00441                   } 
00442                 }
00443               }
00444 
00445               // /////////////
00446               
00447               if((potpixelone[f]==((potpixelone[d])+4)) && 
00448                  ((potpixelone[d])+4)<17){
00449                 if(sider[f]==1) {
00450                   surroundsumone=surroundsumone+
00451                     event[matrixseqcheckeeplane]
00452                     [matrixseqcheckeestrip];
00453                   hitser++;
00454                   
00455                   if (event[matrixseqcheckeeplane]
00456                       [matrixseqcheckeestrip]>topeventone) { 
00457                     topeventone=event[matrixseqcheckeeplane]
00458                       [matrixseqcheckeestrip];
00459                     topplaneone=matrixseqcheckeeplane;
00460                     topstripone=matrixseqcheckeestrip;
00461                     crosstalkhitssourcepixelone[matrixseqplane]
00462                       [matrixseqstrip] = potpixelone[d];
00463                     crosstalkhitssourcespot[matrixseqplane]
00464                       [matrixseqstrip] = potspotone[d];
00465                   }
00466                 }
00467               }
00468               if((potpixeltwo[f]==((potpixeltwo[d])+4)) && 
00469                  ((potpixeltwo[d])+4)<17){
00470                 if(sider[f]==2) {
00471                   surroundsumtwo=surroundsumtwo+
00472                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00473                   hitser++;
00474                   if (event[matrixseqcheckeeplane]
00475                       [matrixseqcheckeestrip]>topeventtwo) { 
00476                     topeventtwo=event[matrixseqcheckeeplane]
00477                       [matrixseqcheckeestrip];
00478                     topplanetwo=matrixseqcheckeeplane;
00479                     topstriptwo=matrixseqcheckeestrip;
00480                     crosstalkhitssourcepixeltwo[matrixseqplane]
00481                       [matrixseqstrip] = potpixeltwo[d];
00482                     crosstalkhitssourcespot[matrixseqplane]
00483                       [matrixseqstrip] = potspottwo[d];
00484                   } 
00485                 }
00486               }
00487               
00488               // ////////////////
00489             
00490               
00491               if((potpixelone[f]==((potpixelone[d])+1)) && 
00492                  (((potpixelone[d])+1)<17) && 
00493                  (((potpixelone[d])+1)!=5) && 
00494                  (((potpixelone[d])+1)!=9) && 
00495                  (((potpixelone[d])+1)!=13)){ 
00496                 if(sider[f]==1) {
00497                   surroundsumone=surroundsumone+
00498                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00499                   hitser++;
00500                   if (event[matrixseqcheckeeplane]
00501                       [matrixseqcheckeestrip]>topeventone) { 
00502                     topeventone=event[matrixseqcheckeeplane]
00503                       [matrixseqcheckeestrip];
00504                     topplaneone=matrixseqcheckeeplane;
00505                     topstripone=matrixseqcheckeestrip;
00506                     crosstalkhitssourcepixelone[matrixseqplane]
00507                       [matrixseqstrip] = potpixelone[d];
00508                     crosstalkhitssourcespot[matrixseqplane]
00509                       [matrixseqstrip] = potspotone[d]; 
00510                   } 
00511                 }
00512               }
00513               if((potpixeltwo[f]==((potpixeltwo[d])+1)) && 
00514                  (((potpixeltwo[d])+1)<17) && 
00515                  (((potpixeltwo[d])+1)!=5) && 
00516                  (((potpixeltwo[d])+1)!=9) && 
00517                  (((potpixeltwo[d])+1)!=13)){ 
00518                 if(sider[f]==2) {
00519                   surroundsumtwo=surroundsumtwo+
00520                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00521                   hitser++;
00522                   if (event[matrixseqcheckeeplane]
00523                       [matrixseqcheckeestrip]>topeventtwo){ 
00524                     topeventtwo=event[matrixseqcheckeeplane]
00525                       [matrixseqcheckeestrip];
00526                     topplanetwo=matrixseqcheckeeplane;
00527                     topstriptwo=matrixseqcheckeestrip;
00528                     crosstalkhitssourcepixeltwo[matrixseqplane]
00529                       [matrixseqstrip] = potpixeltwo[d];
00530                     crosstalkhitssourcespot[matrixseqplane]
00531                       [matrixseqstrip] = potspottwo[d];
00532                   } 
00533                 }
00534               }
00535               
00536               //       /////////////
00537               
00538               if((potpixelone[f]==((potpixelone[d])-1)) && 
00539                  (((potpixelone[d])-1)>0) && 
00540                  (((potpixelone[d])-1)!=4) && 
00541                  (((potpixelone[d])-1)!=8) && 
00542                  (((potpixelone[d])-1)!=12)){  
00543                 if(sider[f]==1) {
00544                   surroundsumone=surroundsumone+
00545                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00546                   hitser++;
00547                   if (event[matrixseqcheckeeplane]
00548                       [matrixseqcheckeestrip]>topeventone) { 
00549                     topeventone=event[matrixseqcheckeeplane]
00550                       [matrixseqcheckeestrip];
00551                     topplaneone=matrixseqcheckeeplane;
00552                     topstripone=matrixseqcheckeestrip;
00553                     crosstalkhitssourcepixelone[matrixseqplane]
00554                       [matrixseqstrip] = potpixelone[d];
00555                     crosstalkhitssourcespot[matrixseqplane]
00556                       [matrixseqstrip] = potspotone[d];
00557                   } 
00558                 }
00559               }
00560               if((potpixeltwo[f]==((potpixeltwo[d])-1)) && 
00561                  (((potpixeltwo[d])-1)>0) && 
00562                  (((potpixeltwo[d])-1)!=4) && 
00563                  (((potpixeltwo[d])-1)!=8) && 
00564                  (((potpixeltwo[d])-1)!=12)){ 
00565                 if(sider[f]==2) {
00566                   surroundsumtwo=surroundsumtwo+
00567                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00568                   hitser++;
00569                   if (event[matrixseqcheckeeplane]
00570                       [matrixseqcheckeestrip]>topeventtwo) { 
00571                     topeventtwo=event[matrixseqcheckeeplane]
00572                       [matrixseqcheckeestrip];
00573                     topplanetwo=matrixseqcheckeeplane;
00574                     topstriptwo=matrixseqcheckeestrip;
00575                     crosstalkhitssourcepixeltwo[matrixseqplane]
00576                       [matrixseqstrip] = potpixeltwo[d];
00577                     crosstalkhitssourcespot[matrixseqplane]
00578                       [matrixseqstrip] = potspottwo[d];
00579                   } 
00580                 }
00581               }
00582 
00583               // //////////////
00584 
00585               if((potpixelone[f]==((potpixelone[d])-5)) && 
00586                  (((potpixelone[d])-5)>0) && 
00587                  (((potpixelone[d])-5)!=4) && 
00588                  (((potpixelone[d])-5)!=8)){ 
00589                 if(sider[f]==1) {
00590                   surroundsumone=surroundsumone+
00591                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00592                   hitser++;
00593                   if (event[matrixseqcheckeeplane]
00594                       [matrixseqcheckeestrip]>topeventone) { 
00595                     topeventone=event[matrixseqcheckeeplane]
00596                       [matrixseqcheckeestrip];
00597                     topplaneone=matrixseqcheckeeplane;
00598                     topstripone=matrixseqcheckeestrip;
00599                     crosstalkhitssourcepixelone[matrixseqplane]
00600                       [matrixseqstrip] = potpixelone[d];
00601                     crosstalkhitssourcespot[matrixseqplane]
00602                       [matrixseqstrip] = potspotone[d];
00603                   } 
00604                 }
00605               }
00606               if((potpixeltwo[f]==((potpixeltwo[d])-5)) && 
00607                  (((potpixeltwo[d])-5)>0) && 
00608                  (((potpixeltwo[d])-5)!=4) && 
00609                  (((potpixeltwo[d])-5)!=8)){ 
00610                 if(sider[f]==2) {
00611                   surroundsumtwo=surroundsumtwo+
00612                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00613                   hitser++;
00614                   if (event[matrixseqcheckeeplane]
00615                       [matrixseqcheckeestrip]>topeventtwo) { 
00616                     topeventtwo=event[matrixseqcheckeeplane]
00617                       [matrixseqcheckeestrip];
00618                     topplanetwo=matrixseqcheckeeplane;
00619                     topstriptwo=matrixseqcheckeestrip;
00620                     crosstalkhitssourcepixeltwo[matrixseqplane]
00621                       [matrixseqstrip] = potpixeltwo[d];
00622                     crosstalkhitssourcespot[matrixseqplane]
00623                       [matrixseqstrip] = potspottwo[d]; 
00624                   }
00625                 }
00626               }
00627               
00628               // //////////////////
00629               
00630               if((potpixelone[f]==((potpixelone[d])+5)) && 
00631                  (((potpixelone[d])+5)<17) && 
00632                  (((potpixelone[d])+5)!=9) && 
00633                  (((potpixelone[d])+5)!=13)){
00634                 if(sider[f]==1) {
00635                   surroundsumone=surroundsumone+
00636                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00637                   hitser++;
00638                   if (event[matrixseqcheckeeplane]
00639                       [matrixseqcheckeestrip]>topeventone) { 
00640                     topeventone=event[matrixseqcheckeeplane]
00641                       [matrixseqcheckeestrip];
00642                     topplaneone=matrixseqcheckeeplane;
00643                     topstripone=matrixseqcheckeestrip;
00644                     crosstalkhitssourcepixelone[matrixseqplane]
00645                       [matrixseqstrip] = potpixelone[d];
00646                     crosstalkhitssourcespot[matrixseqplane]
00647                       [matrixseqstrip] = potspotone[d];
00648                   } 
00649                 }
00650               }
00651               if((potpixeltwo[f]==((potpixeltwo[d])+5)) && 
00652                  (((potpixeltwo[d])+5)<17) && 
00653                  (((potpixeltwo[d])+5)!=9) && 
00654                  (((potpixeltwo[d])+5)!=13)){
00655                 if(sider[f]==2) {
00656                   surroundsumtwo=surroundsumtwo+
00657                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00658                   hitser++;
00659                   if (event[matrixseqcheckeeplane]
00660                       [matrixseqcheckeestrip]>topeventtwo) { 
00661                     topeventtwo=event[matrixseqcheckeeplane]
00662                       [matrixseqcheckeestrip];
00663                     topplanetwo=matrixseqcheckeeplane;
00664                     topstriptwo=matrixseqcheckeestrip; 
00665                     crosstalkhitssourcepixeltwo[matrixseqplane]
00666                       [matrixseqstrip] = potpixeltwo[d];
00667                     crosstalkhitssourcespot[matrixseqplane]
00668                       [matrixseqstrip] = potspottwo[d];
00669                   } 
00670                 }
00671               }
00672               
00673               // /////////////////////
00674               
00675               if((potpixelone[f]==((potpixelone[d])-3)) && 
00676                  (((potpixelone[d])-3)>0) && 
00677                  (((potpixelone[d])-3)!=1) && 
00678                  (((potpixelone[d])-3)!=5) && 
00679                  (((potpixelone[d])-3)!=9) && 
00680                  (((potpixelone[d])-3)!=13)){
00681                 if(sider[f]==1) {
00682                   surroundsumone=surroundsumone+
00683                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00684                   hitser++;
00685                   if (event[matrixseqcheckeeplane]
00686                       [matrixseqcheckeestrip]>topeventone) { 
00687                     topeventone=event[matrixseqcheckeeplane]
00688                       [matrixseqcheckeestrip];
00689                     topplaneone=matrixseqcheckeeplane;
00690                     topstripone=matrixseqcheckeestrip;
00691                     crosstalkhitssourcepixelone[matrixseqplane]
00692                       [matrixseqstrip] = potpixelone[d];
00693                     crosstalkhitssourcespot[matrixseqplane]
00694                       [matrixseqstrip] = potspotone[d];
00695                   } 
00696                 }
00697               }
00698               if((potpixeltwo[f]==((potpixeltwo[d])-3)) && 
00699                  (((potpixeltwo[d])-3)>0) && 
00700                  (((potpixeltwo[d])-3)!=1) && 
00701                  (((potpixeltwo[d])-3)!=5) && 
00702                  (((potpixeltwo[d])-3)!=9) && 
00703                  (((potpixeltwo[d])-3)!=13)){
00704                 if(sider[f]==2) {
00705                   surroundsumtwo=surroundsumtwo+
00706                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00707                   hitser++;
00708                   if (event[matrixseqcheckeeplane]
00709                       [matrixseqcheckeestrip]>topeventtwo) { 
00710                     topeventtwo=event[matrixseqcheckeeplane]
00711                       [matrixseqcheckeestrip];
00712                     topplanetwo=matrixseqcheckeeplane;
00713                     topstriptwo=matrixseqcheckeestrip;
00714                     crosstalkhitssourcepixeltwo[matrixseqplane]
00715                       [matrixseqstrip] = potpixeltwo[d];
00716                     crosstalkhitssourcespot[matrixseqplane]
00717                       [matrixseqstrip] = potspottwo[d];
00718                   } 
00719                 }
00720               }
00721               
00722               // ////////////////////
00723               
00724               if((potpixelone[f]==((potpixelone[d])+3)) && 
00725                  (((potpixelone[d])+3)<17) && 
00726                  (((potpixelone[d])+3)!=4) && 
00727                  (((potpixelone[d])+3)!=8) && 
00728                  (((potpixelone[d])+3)!=12) && 
00729                  (((potpixelone[d])+3)!=16)){ 
00730                 if(sider[f]==1) {
00731                   surroundsumone=surroundsumone+
00732                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00733                   hitser++;
00734                   if (event[matrixseqcheckeeplane]
00735                       [matrixseqcheckeestrip]>topeventone) { 
00736                     topeventone=event[matrixseqcheckeeplane]
00737                       [matrixseqcheckeestrip];
00738                     topplaneone=matrixseqcheckeeplane;
00739                     topstripone=matrixseqcheckeestrip;
00740                     crosstalkhitssourcepixelone[matrixseqplane]
00741                       [matrixseqstrip] = potpixelone[d];
00742                     crosstalkhitssourcespot[matrixseqplane]
00743                       [matrixseqstrip] = potspotone[d]; 
00744                   } 
00745                 }
00746               }
00747               if((potpixeltwo[f]==((potpixeltwo[d])+3)) && 
00748                  (((potpixeltwo[d])+3)<17) && 
00749                  (((potpixeltwo[d])+3)!=4) && 
00750                  (((potpixeltwo[d])+3)!=8) && 
00751                  (((potpixeltwo[d])+3)!=12) && 
00752                  (((potpixeltwo[d])+3)!=16)){
00753                 if(sider[f]==2) {
00754                   surroundsumtwo=surroundsumtwo+
00755                     event[matrixseqcheckeeplane][matrixseqcheckeestrip];
00756                   hitser++;
00757                   if (event[matrixseqcheckeeplane]
00758                       [matrixseqcheckeestrip]>topeventtwo) { 
00759                     topeventtwo=event[matrixseqcheckeeplane]
00760                       [matrixseqcheckeestrip];
00761                     topplanetwo=matrixseqcheckeeplane;
00762                     topstriptwo=matrixseqcheckeestrip;
00763                     crosstalkhitssourcepixeltwo[matrixseqplane]
00764                       [matrixseqstrip] = potpixeltwo[d];
00765                     crosstalkhitssourcespot[matrixseqplane]
00766                       [matrixseqstrip] = potspottwo[d]; 
00767                   } 
00768                 }
00769               }
00770               
00771             }
00772             // }
00773             
00774           } // d
00775           
00776           // ***********************************
00777           
00778           //if(sider[f]==1 && 
00779           // event[matrixseqplane][matrixseqstrip]<
00780           // fopt*surroundsumone && 
00781           // !(matrixseqstrip==topstripone && 
00782           //   matrixseqplane==topplaneone) && 
00783           // crosstalkhitssourcepixelone[matrixseqplane]
00784           // [matrixseqstrip]!=0 && 
00785           // event[matrixseqplane][(matrixseqstrip-1)]==0 && 
00786           // event[matrixseqplane][(matrixseqstrip+1)]==0 ) {
00787           //if(sider[f]==1 && 
00788           //event[matrixseqplane][matrixseqstrip]<surroundsumone ) {
00789           
00790 
00791           // Feb21 : added a load more vetos at the end to try and stop
00792           // crosstalk hits being identified in the middle of a track
00793           // this is high quality code, I'm sure you'll agree
00794 
00795           // Mar21 : beam/cosmic flag added. Cosmics have low angle so
00796           // window needs to be a big larger (cosmic)
00797    
00798           if (sider[f]==1 && 
00799               event[matrixseqplane][matrixseqstrip]<
00800               fopt*surroundsumone && 
00801               !(matrixseqstrip==topstripone && 
00802                 matrixseqplane==topplaneone) && 
00803               crosstalkhitssourcepixelone[matrixseqplane]
00804               [matrixseqstrip]!=0 && 
00805               event[matrixseqplane][(matrixseqstrip-1)]==0 && 
00806               event[matrixseqplane][(matrixseqstrip+1)]==0 && 
00807               event[(matrixseqplane-2)][matrixseqstrip]==0 && 
00808               event[(matrixseqplane+2)][matrixseqstrip]==0 && 
00809               event[(matrixseqplane-2)][(matrixseqstrip-1)]==0 && 
00810               event[(matrixseqplane+2)][(matrixseqstrip-1)]==0 && 
00811               event[(matrixseqplane-2)][(matrixseqstrip+1)]==0 && 
00812               event[(matrixseqplane+2)][(matrixseqstrip+1)]==0 && 
00813               event[(matrixseqplane-2)][(matrixseqstrip-1-fcosmic)]==0&&
00814               event[(matrixseqplane+2)][(matrixseqstrip-1-fcosmic)]==0&&
00815               event[(matrixseqplane-2)][(matrixseqstrip+1+fcosmic)]==0&&
00816               event[(matrixseqplane+2)][(matrixseqstrip+1+fcosmic)]==0){
00817             
00818             crosstalkhits[matrixseqplane][matrixseqstrip] = 
00819               event[matrixseqplane][matrixseqstrip];
00820             crosstalkhitssourceplane[matrixseqplane][matrixseqstrip] = 
00821               topplaneone;
00822             crosstalkhitssourcestrip[matrixseqplane][matrixseqstrip] = 
00823               topstripone;
00824             crosstalkhitspixel[matrixseqplane][matrixseqstrip] = 
00825               potpixelone[f];
00826             crosstalknumxhits[matrixseqplane][matrixseqstrip] = hitser;
00827             crosstalkhitssourcepixel[matrixseqplane][matrixseqstrip] = 
00828               crosstalkhitssourcepixelone[matrixseqplane]
00829               [matrixseqstrip];
00830 
00831             MSG("CDCrossTalker",Msg::kDebug) 
00832               <<"Crosstalk of "
00833               <<crosstalkhits[matrixseqplane][matrixseqstrip] 
00834               << " at " << matrixseqplane 
00835               << "," << matrixseqstrip 
00836               << " pixel: " << potpixelone[f] 
00837               << " from " << topplaneone 
00838               << "," << topstripone 
00839               << ",pixel: " 
00840               << crosstalkhitssourcepixelone[matrixseqplane]
00841               [matrixseqstrip] 
00842               << " " << topeventone << endl;
00843           }
00844           
00845           if (sider[f]==2 && 
00846               event[matrixseqplane][matrixseqstrip]<
00847               fopt*surroundsumtwo && 
00848               !(matrixseqstrip==topstriptwo && 
00849                 matrixseqplane==topplanetwo) &&  
00850               crosstalkhitssourcepixeltwo[matrixseqplane]
00851               [matrixseqstrip] && 
00852               event[matrixseqplane][(matrixseqstrip-1)]==0 && 
00853               event[matrixseqplane][(matrixseqstrip+1)]==0 && 
00854               event[(matrixseqplane-2)][matrixseqstrip]==0 && 
00855               event[(matrixseqplane+2)][matrixseqstrip]==0 && 
00856               event[(matrixseqplane-2)][(matrixseqstrip-1)]==0 && 
00857               event[(matrixseqplane+2)][(matrixseqstrip-1)]==0 && 
00858               event[(matrixseqplane-2)][(matrixseqstrip+1)]==0 && 
00859               event[(matrixseqplane+2)][(matrixseqstrip+1)]==0 && 
00860               event[(matrixseqplane-2)][(matrixseqstrip-1-fcosmic)]==0 &&
00861               event[(matrixseqplane+2)][(matrixseqstrip-1-fcosmic)]==0 &&
00862               event[(matrixseqplane-2)][(matrixseqstrip+1+fcosmic)]==0 &&
00863               event[(matrixseqplane+2)][(matrixseqstrip+1+fcosmic)]==0) {
00864          
00865             //if(sider[f]==2 && 
00866             //event[matrixseqplane][matrixseqstrip]<surroundsumtwo ) {
00867             
00868             crosstalkhits[matrixseqplane][matrixseqstrip] = 
00869               event[matrixseqplane][matrixseqstrip];
00870             crosstalkhitssourceplane[matrixseqplane][matrixseqstrip] = 
00871               topplanetwo;
00872             crosstalkhitssourcestrip[matrixseqplane][matrixseqstrip] = 
00873               topstriptwo; 
00874             crosstalkhitspixel[matrixseqplane][matrixseqstrip] = 
00875               potpixeltwo[f];
00876             crosstalknumxhits[matrixseqplane][matrixseqstrip] = hitser;
00877             
00878             crosstalkhitssourcepixel[matrixseqplane][matrixseqstrip] = 
00879               crosstalkhitssourcepixeltwo[matrixseqplane]
00880               [matrixseqstrip];
00881             MSG("CDCrossTalker",Msg::kDebug) 
00882               << "Crosstalk of " 
00883               <<   crosstalkhits[matrixseqplane][matrixseqstrip] 
00884               << " at " << matrixseqplane 
00885               << "," << matrixseqstrip 
00886               << " pixel: " << potpixeltwo[f] 
00887               << " from " << topplanetwo 
00888               << "," << topstriptwo 
00889               << " ,pixel: " 
00890               << crosstalkhitssourcepixeltwo[matrixseqplane]
00891               [matrixseqstrip] 
00892               << " " << topeventtwo << endl;
00893           }
00894         } // f 
00895       } // buggered
00896     }
00897   }
00898   
00899   stripIter = fAllStrips.begin();
00900   
00901   while(stripIter!=stripEnd){
00902     
00903     int plane = stripIter->second.GetPlane();
00904     int strip = stripIter->second.GetStrip();
00905     
00906     if(plane<=59){
00907       
00908       if(stripIter->second.GetNDigit(StripEnd::kNegative)>0){
00909         int end = StripEnd::kNegative;
00910         int sourceplane=crosstalkhitssourceplane[plane][strip+(end-1)*24];
00911         int sourcestrip=(crosstalkhitssourcestrip[plane]
00912                          [(strip+(end-1)*24)])%24;
00913         int sourceend=int(crosstalkhitssourcestrip[plane]
00914                           [strip+(end-1)*24]/24.)+1;
00915         int numxhits=crosstalknumxhits[plane][strip+(end-1)*24];
00916         
00917         if(crosstalkhits[plane][24*(end-1)+strip]<=0) {
00918           fCleanedStrips[stripIter->first] = stripIter->second;
00919         }
00920         else {
00921           fXTalkStrips[stripIter->first] = stripIter->second;
00922           fNumSurround[stripIter->first] = numxhits;
00923           fnum_xtalk_hits+=1;
00924           MSG("CDCrossTalker",Msg::kDebug)<<fnum_xtalk_hits<<endl;
00925           MSG("CDCrossTalker",Msg::kDebug)
00926             <<crosstalkhits[plane][24*(end-1)+strip] << endl;
00927           MSG("CDCrossTalker",Msg::kDebug) 
00928             <<sourceend<<" "<<sourcestrip<<" "<<sourceplane<<endl;
00929           
00930           StripEnd::EStripEnd dum_strip_end;
00931           if(sourceend==1) dum_strip_end = StripEnd::kNegative;
00932           else dum_strip_end = StripEnd::kPositive;
00933           PlexStripEndId dummyplex(Detector::kCalDet,sourceplane,
00934                                    sourcestrip,dum_strip_end);
00935           int theKey = dummyplex.Build18BitPlnStripKey();
00936           fXTalkSource[stripIter->first] = theKey;
00937         }
00938       }
00939       
00940       if(stripIter->second.GetNDigit(StripEnd::kPositive)>0){
00941         int end = StripEnd::kPositive;
00942         int sourceplane=crosstalkhitssourceplane[plane][strip+(end-1)*24];
00943         int sourcestrip=(crosstalkhitssourcestrip[plane]
00944                          [(strip+(end-1)*24)])%24;
00945         int sourceend=int(crosstalkhitssourcestrip[plane]
00946                           [strip+(end-1)*24]/24.)+1;
00947         int numxhits=crosstalknumxhits[plane][strip+(end-1)*24];
00948         
00949         if(crosstalkhits[plane][24*(end-1)+strip]<=0) {
00950           fCleanedStrips[stripIter->first] = stripIter->second;
00951         }       
00952         else {
00953           fXTalkStrips[stripIter->first] = stripIter->second;
00954           fNumSurround[stripIter->first] = numxhits;
00955           fnum_xtalk_hits+=1;
00956           MSG("CDCrossTalker",Msg::kDebug)<<fnum_xtalk_hits<<endl;
00957           MSG("CDCrossTalker",Msg::kDebug)
00958             <<crosstalkhits[plane][24*(end-1)+strip] << endl;
00959           MSG("CDCrossTalker",Msg::kDebug) 
00960             <<sourceend<<" "<<sourcestrip<<" "<<sourceplane<<endl;
00961           
00962           StripEnd::EStripEnd dum_strip_end;
00963           if(sourceend==1) dum_strip_end = StripEnd::kNegative;
00964           else dum_strip_end = StripEnd::kPositive;
00965           PlexStripEndId dummyplex(Detector::kCalDet,sourceplane,
00966                                    sourcestrip,dum_strip_end);
00967           int theKey = dummyplex.Build18BitPlnStripKey();
00968           fXTalkSource[stripIter->first] = theKey;
00969         }
00970       }
00971 
00972     }
00973     //for Cosmic counter hits
00974     else fCleanedStrips[stripIter->first] = stripIter->second; 
00975 
00976     stripIter++;
00977   }
00978   return fCleanedStrips;
00979 }

Int_t CDCrossTalker::GetNumHitsRemoved (  )  [inline]

Definition at line 29 of file CDCrossTalker.h.

References fnum_xtalk_hits.

00029 {return fnum_xtalk_hits;}

std::map< int, int > CDCrossTalker::GetXTalkSourceStrips (  ) 

Definition at line 991 of file CDCrossTalker.cxx.

References fnum_xtalk_hits, fXTalkSource, and GetCleanStripMap().

00992 {  
00993   if(fnum_xtalk_hits==-1) this->GetCleanStripMap();
00994   return fXTalkSource;
00995 }

void CDCrossTalker::GetXTalkStripInfo ( TClonesArray *  infoarray  ) 

Definition at line 999 of file CDCrossTalker.cxx.

References fAllStrips, fnum_xtalk_hits, fNumSurround, fXTalkSource, fXTalkStrips, CandStripHandle::GetCharge(), GetCleanStripMap(), Calibrator::GetMIP(), CandStripHandle::GetNDigit(), PlexPixelSpotId::GetPixel(), PlexHandle::GetPixelSpotId(), CandStripHandle::GetPlane(), PlexPixelSpotId::GetSpot(), CandStripHandle::GetStrip(), CandStripHandle::GetStripEndId(), CandStripHandle::GetTime(), Calibrator::Instance(), Msg::kDebug, StripEnd::kNegative, CalDigitType::kNone, CalDigitType::kPE, StripEnd::kPositive, CalDigitType::kSigCorr, CalDigitType::kSigLin, MSG, and CalScheme::Reset().

01000 {
01001   if(fnum_xtalk_hits==-1) this->GetCleanStripMap();
01002   
01003   TClonesArray &infar = *infoarray;
01004   
01005   int cnt=0;
01006   
01007   map<int,CandStripHandle>::iterator XTalkIt = fXTalkStrips.begin();
01008   map<int,CandStripHandle>::iterator XTalkEnd = fXTalkStrips.end();
01009   
01010   if(XTalkIt==XTalkEnd) return;
01011   const VldContext *vc = XTalkIt->second.GetVldContext();
01012   PlexHandle plexHand(*vc);
01013   
01014   //get a reference to the calibrator
01015   Calibrator& calibrator=Calibrator::Instance();
01016   calibrator.Reset(*vc);
01017 
01018   while(XTalkIt!=XTalkEnd){
01019     MSG("CDCrossTalker",Msg::kDebug)
01020       << XTalkIt->first << " " << fXTalkSource[XTalkIt->first] << endl;
01021     
01022     map<int,CandStripHandle>::iterator sorsIt = 
01023       fAllStrips.find(fXTalkSource[XTalkIt->first]);
01024     
01025     CandStripHandle& csh = XTalkIt->second;
01026     CandStripHandle& sors_csh = sorsIt->second;
01027     
01028     if(csh.GetNDigit(StripEnd::kNegative)>0){
01029       
01030       PlexPixelSpotId spotId = plexHand.GetPixelSpotId(csh.GetStripEndId(StripEnd::kNegative));
01031       PlexPixelSpotId sors_spotId = plexHand.GetPixelSpotId(sors_csh.GetStripEndId(StripEnd::kNegative));
01032       
01033       new(infar[cnt]) 
01034         CDXTalkHitInfo
01035         (StripEnd::kNegative,
01036          csh.GetPlane(),
01037          csh.GetStrip(),
01038          spotId.GetPixel(),
01039          fNumSurround[XTalkIt->first],
01040          csh.GetCharge(CalDigitType::kNone,StripEnd::kNegative),
01041          csh.GetCharge(CalDigitType::kSigLin,StripEnd::kNegative),
01042          csh.GetCharge(CalDigitType::kSigCorr,StripEnd::kNegative),
01043          csh.GetCharge(CalDigitType::kPE,StripEnd::kNegative),
01044          calibrator.GetMIP(csh.GetCharge(CalDigitType::kSigCorr,
01045                                           StripEnd::kNegative)),
01046          StripEnd::kNegative,
01047          sors_csh.GetPlane(),
01048          sors_csh.GetStrip(),
01049          sors_spotId.GetPixel(),
01050          sors_spotId.GetSpot(),
01051          sors_csh.GetCharge(CalDigitType::kNone,StripEnd::kNegative),
01052          csh.GetTime(StripEnd::kNegative));
01053       cnt+=1;
01054     }
01055 
01056     if(csh.GetNDigit(StripEnd::kPositive)>0){
01057             
01058       PlexPixelSpotId spotId = plexHand.GetPixelSpotId(csh.GetStripEndId(StripEnd::kPositive));
01059       PlexPixelSpotId sors_spotId = plexHand.GetPixelSpotId(sors_csh.GetStripEndId(StripEnd::kPositive));
01060 
01061       new(infar[cnt]) 
01062         CDXTalkHitInfo
01063         (StripEnd::kPositive,
01064          csh.GetPlane(),
01065          csh.GetStrip(),
01066          spotId.GetPixel(),
01067          fNumSurround[XTalkIt->first],
01068          csh.GetCharge(CalDigitType::kNone,StripEnd::kPositive),
01069          csh.GetCharge(CalDigitType::kSigLin,StripEnd::kPositive),
01070          csh.GetCharge(CalDigitType::kSigCorr,StripEnd::kPositive),
01071          csh.GetCharge(CalDigitType::kPE,StripEnd::kPositive),
01072          calibrator.GetMIP(csh.GetCharge(CalDigitType::kSigCorr,
01073                                           StripEnd::kPositive)),
01074          StripEnd::kPositive,
01075          sors_csh.GetPlane(),
01076          sors_csh.GetStrip(),
01077          sors_spotId.GetPixel(),
01078          sors_spotId.GetSpot(),
01079          sors_csh.GetCharge(CalDigitType::kNone,StripEnd::kPositive),
01080          csh.GetTime(StripEnd::kPositive));
01081       cnt+=1;
01082     }
01083     
01084     XTalkIt++;
01085   }
01086   infar.Compress();
01087 }

std::map< int, CandStripHandle > CDCrossTalker::GetXTalkStripMap (  ) 

Definition at line 983 of file CDCrossTalker.cxx.

References fnum_xtalk_hits, fXTalkStrips, and GetCleanStripMap().

00984 {
00985   if(fnum_xtalk_hits==-1) this->GetCleanStripMap();
00986   return fXTalkStrips; 
00987 }

Int_t CDCrossTalker::SetMap ( std::map< Int_t, CandStripHandle stripmap  ) 

Definition at line 50 of file CDCrossTalker.cxx.

References fAllStrips.

Referenced by CDCrossTalker().

00051 {
00052   fAllStrips=stripMap; 
00053   return 1;
00054 }

Int_t CDCrossTalker::SetOption ( Float_t  opt  ) 

Definition at line 58 of file CDCrossTalker.cxx.

References fopt.

Referenced by CDCrossTalker().

00059 {
00060   fopt = opt; 
00061   return 1;
00062 }


Member Data Documentation

std::map<Int_t,CandStripHandle> CDCrossTalker::fAllStrips [private]

Definition at line 37 of file CDCrossTalker.h.

Referenced by GetCleanStripMap(), GetXTalkStripInfo(), and SetMap().

Definition at line 38 of file CDCrossTalker.h.

Referenced by GetCleanStripMap().

Int_t CDCrossTalker::fcosmic [private]

Definition at line 44 of file CDCrossTalker.h.

Referenced by CDCrossTalker(), and GetCleanStripMap().

std::map<Int_t,Int_t> CDCrossTalker::fNumSurround [private]

Definition at line 42 of file CDCrossTalker.h.

Referenced by GetCleanStripMap(), and GetXTalkStripInfo().

Float_t CDCrossTalker::fopt [private]

Definition at line 39 of file CDCrossTalker.h.

Referenced by GetCleanStripMap(), and SetOption().

std::map<Int_t,Int_t> CDCrossTalker::fXTalkSource [private]

Definition at line 41 of file CDCrossTalker.h.

Referenced by GetCleanStripMap(), GetXTalkSourceStrips(), and GetXTalkStripInfo().

std::map<Int_t,CandStripHandle> CDCrossTalker::fXTalkStrips [private]

Definition at line 40 of file CDCrossTalker.h.

Referenced by GetCleanStripMap(), GetXTalkStripInfo(), and GetXTalkStripMap().


The documentation for this class was generated from the following files:

Generated on 22 Nov 2017 for loon by  doxygen 1.6.1