Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CDUnidentifiedHits.cxx

Go to the documentation of this file.
00001 
00002 
00003 // Program name: CDUnidentifiedHits.cxx
00004 //
00005 // Package: CalDetTracker
00006 //
00007 // Purpose: 
00008 //
00009 // Contact: Chris Smith, Ryan Nichol, Leo Jenner or Jeff Hartnell
00011 
00012 #include "TClonesArray.h"
00013 
00014 #include "Calibrator/Calibrator.h"
00015 #include "Plex/PlexSEIdAltL.h"
00016 #include "Conventions/CalDigitType.h"
00017 #include "MessageService/MsgService.h"
00018 #include "Validity/VldContext.h"
00019 
00020 #include "CalDetTracker/CDUnidentifiedHits.h"
00021 #include "CalDetTracker/CDTrackedHitInfo.h"
00022 
00023 using std::cout;
00024 using std::endl;
00025 using std::map;
00026 
00027 CVSID("$Id: CDUnidentifiedHits.cxx,v 1.4 2004/07/26 11:02:09 hartnell Exp $");
00028 
00029 //......................................................................
00030 
00031 CDUnidentifiedHits::CDUnidentifiedHits
00032 (map<int,CandStripHandle> allStrips, 
00033  map<int,CandStripHandle> evenPlStrips, 
00034  map<int,CandStripHandle> oddPlStrips, 
00035  map<int,CandStripHandle> CCStrips, 
00036  map<int,CandStripHandle> xTalkStrips)
00037 {
00038   this->SetMap(allStrips,0);
00039   this->SetMap(evenPlStrips,1);
00040   this->SetMap(oddPlStrips,2);
00041   this->SetMap(CCStrips,3);
00042   this->SetMap(xTalkStrips,4);
00043 }
00044 
00045 //......................................................................
00046 
00047 int CDUnidentifiedHits::SetMap(map<int,CandStripHandle> hits,int a)
00048 {
00049   
00050   if(a==0) {
00051     map<int,CandStripHandle>::iterator digi_it = hits.begin();
00052     map<int,CandStripHandle>::iterator end_digi_it = hits.end();
00053     while(digi_it!=end_digi_it) {
00054       fAllStrips[digi_it->first] = digi_it->second;
00055       digi_it++;
00056     }
00057     return 1;
00058   }
00059 
00060   else if(a==1) {
00061     map<int,CandStripHandle>::iterator even_it = hits.begin();
00062     map<int,CandStripHandle>::iterator end_even_it = hits.end();
00063     while(even_it!=end_even_it) {
00064       fEvenPlStrips[even_it->first] = even_it->second;
00065       even_it++;
00066     }
00067     return 1;
00068   }
00069 
00070   else if(a==2) {
00071     map<int,CandStripHandle>::iterator odd_it = hits.begin();
00072     map<int,CandStripHandle>::iterator end_odd_it = hits.end();
00073     while(odd_it!=end_odd_it) {
00074       fOddPlStrips[odd_it->first] = odd_it->second;
00075       odd_it++;
00076     }
00077     return 1;
00078   }
00079 
00080   else if(a==3) {
00081     map<int,CandStripHandle>::iterator cc_it = hits.begin();
00082     map<int,CandStripHandle>::iterator end_cc_it = hits.end();
00083     while(cc_it!=end_cc_it) {
00084       fCCStrips[cc_it->first] = cc_it->second;
00085       cc_it++;
00086     }
00087     return 1;
00088   }
00089 
00090   else if(a==4) {
00091     map<int,CandStripHandle>::iterator xtalk_it = hits.begin();
00092     map<int,CandStripHandle>::iterator end_xtalk_it = hits.end();
00093     while(xtalk_it!=end_xtalk_it) {
00094       fXTalkStrips[xtalk_it->first] = xtalk_it->second;
00095       xtalk_it++;
00096     }
00097     return 1;
00098   }
00099   
00100   else 
00101     MSG("CDUnidentifiedHits",Msg::kWarning)
00102     << "CDUnidentifiedHits Error: " 
00103                  << "Not a valid map input number " 
00104                  << "0==all, 1==even planes, 2==odd planes, " 
00105                  << "3==cosmic counters, 4==X talk." << endl;
00106 
00107   return 0;
00108 }
00109 
00110 //......................................................................
00111 
00112 void CDUnidentifiedHits::GetUnidentifiedStripInfo
00113 (TClonesArray *infoarray)
00114 {
00115   map<int,CandStripHandle>::iterator stpIt = fAllStrips.begin();
00116   map<int,CandStripHandle>::iterator stpEnd = fAllStrips.end();
00117   
00118   //get a reference to the calibrator
00119   Calibrator& calibrator=Calibrator::Instance();
00120 
00121   if(stpIt!=stpEnd) {
00122     const VldContext *vc = stpIt->second.GetVldContext();
00123     calibrator.Reset(*vc);
00124   }
00125   
00126   int cnt = 0;
00127   
00128   TClonesArray &unident = *infoarray;
00129   while(stpIt!=stpEnd){
00130     
00131     if(fEvenPlStrips.find(stpIt->first)==fEvenPlStrips.end() &&
00132        fOddPlStrips.find(stpIt->first)==fOddPlStrips.end() &&
00133        fXTalkStrips.find(stpIt->first)==fXTalkStrips.end() &&
00134        fCCStrips.find(stpIt->first)==fCCStrips.end()){
00135       
00136       CandStripHandle csh = stpIt->second;
00137       
00138       if(csh.GetNDigit(StripEnd::kNegative)>0){
00139         new(unident[cnt]) 
00140           CDTrackedHitInfo
00141           (StripEnd::kNegative,csh.GetPlane(),csh.GetStrip(),
00142            csh.GetCharge(CalDigitType::kNone,StripEnd::kNegative),
00143            csh.GetCharge(CalDigitType::kSigLin,StripEnd::kNegative),
00144            csh.GetCharge(CalDigitType::kSigCorr,StripEnd::kNegative),
00145            csh.GetCharge(CalDigitType::kPE,StripEnd::kNegative),
00146            calibrator.GetMIP(csh.GetCharge(CalDigitType::kSigCorr,
00147                                            StripEnd::kNegative)),
00148            0.,0.,0.,0.,0.,0.,csh.GetTime(StripEnd::kNegative));
00149         cnt++;
00150       }
00151       
00152       if(csh.GetNDigit(StripEnd::kPositive)>0){
00153         new(unident[cnt]) 
00154           CDTrackedHitInfo
00155           (StripEnd::kPositive,csh.GetPlane(),csh.GetStrip(),
00156            csh.GetCharge(CalDigitType::kNone,StripEnd::kPositive),
00157            csh.GetCharge(CalDigitType::kSigLin,StripEnd::kPositive),
00158            csh.GetCharge(CalDigitType::kSigCorr,StripEnd::kPositive),
00159            csh.GetCharge(CalDigitType::kPE,StripEnd::kPositive),
00160            calibrator.GetMIP(csh.GetCharge(CalDigitType::kSigCorr,
00161                                            StripEnd::kPositive)),
00162            0.,0.,0.,0.,0.,0.,csh.GetTime(StripEnd::kPositive));
00163         cnt++;
00164       }
00165       
00166     }
00167     stpIt++;
00168   }
00169   unident.Compress();
00170 
00171 }
00172 
00173 //......................................................................
00174 
00175 
00176 

Generated on Mon Feb 15 11:06:31 2010 for loon by  doxygen 1.3.9.1