#include <CDTrackerModule.h>
Inheritance diagram for CDTrackerModule:
Public Member Functions | |
| CDTrackerModule () | |
| JobCResult | Ana (const MomNavigator *mom) |
| void | HandleCommand (JobCommand *cmd) |
| void | EndJob () |
Private Member Functions | |
| void | CleanDataMembers () |
| void | FillPID (CandCalDetSIHandle *CDSI) |
| void | FillPID (const CandCalDetPIDHandle *cdpid) |
| void | InitialiseTree () |
| TFile * | OpenFile (Int_t runNumber, Int_t runNumberSub) |
Private Attributes | |
| bool | ffirstrecord |
| Float_t | fBeamMomentum |
| Int_t | fNumDeadChips |
| Float_t | fTemperature |
| SimFlag::SimFlag_t | fSimFlag |
| Int_t | frun |
| Int_t | fsubrun |
| Int_t | fsnarl |
| Int_t | fSec |
| Int_t | fStartSnarl |
| Int_t | fEndSnarl |
| Int_t | fStartTime |
| Int_t | fEndTime |
| Char_t | ftag [256] |
| TFile * | fsavefile |
| CDTrackerOptions * | fTrkOpt |
| TTree * | ftree |
| CDTrackInfo * | fTrkInfo |
| TClonesArray * | fTrkHits |
| TClonesArray * | fStTrkHits |
| TClonesArray * | fCCHits |
| TClonesArray * | fXTalkHits |
| TClonesArray * | fUnTrkHits |
| TClonesArray * | fTruthHits |
| CDPIDInfo * | fPID |
| Int_t | fJustWriteTracks |
| Int_t | fOverwriteFile |
| Int_t | fWritePID |
| Int_t | fWriteTruth |
|
|
Definition at line 68 of file CDTrackerModule.cxx. References fBeamMomentum, fCCHits, fEndSnarl, fEndTime, ffirstrecord, fJustWriteTracks, fNumDeadChips, fOverwriteFile, fPID, frun, fsavefile, fSec, fSimFlag, fsnarl, fStartSnarl, fStartTime, fStTrkHits, fsubrun, ftag, fTemperature, ftree, fTrkHits, fTrkInfo, fTrkOpt, fTruthHits, fUnTrkHits, fWritePID, fWriteTruth, and fXTalkHits. 00069 {
00070 ffirstrecord=true;
00071
00072 fBeamMomentum=0;
00073 fNumDeadChips=-1;
00074 fTemperature=-1;
00075 fSimFlag=SimFlag::kUnknown;
00076 frun=0;
00077 fsubrun=0;
00078 fsnarl=0;
00079 fSec=-1;
00080 fStartSnarl=0;
00081 fEndSnarl=0;
00082 fStartTime=0;
00083 fEndTime=0;
00084 fsavefile=0;
00085 fJustWriteTracks=0;
00086 fOverwriteFile=0;
00087 fWritePID=0;
00088 sprintf(ftag,"SetFileIDToMakeThisShorter");
00089 fWriteTruth=0;
00090
00091 //initialise pointers
00092 fTrkInfo=0;
00093 ftree=0;
00094 fPID=0;
00095
00096 //"beam" tracked hits
00097 fTrkHits=new TClonesArray("CDTrackedHitInfo",1000);
00098 //cosmic counter hits
00099 fCCHits=new TClonesArray("CDTrackedHitInfo",1000);
00100 //"cosmic" tracked hits
00101 fStTrkHits=new TClonesArray("CDTrackedHitInfo",1000);
00102 //xtalk hits
00103 fXTalkHits=new TClonesArray("CDXTalkHitInfo",1000);
00104 //unidentified hits
00105 fUnTrkHits=new TClonesArray("CDTrackedHitInfo",1000);
00106 //the truth of the hits
00107 fTruthHits=new TClonesArray("CDTruthHitInfo",1000);
00108
00109 //tracker options
00110 fTrkOpt=new CDTrackerOptions();
00111 }
|
|
|
Implement this for read only access to the MomNavigator Reimplemented from JobCModule. Definition at line 115 of file CDTrackerModule.cxx. References SimFlag::AsString(), CleanDataMembers(), CDTrackerOptions::Cosmic(), count, fBeamMomentum, fCCHits, fEndSnarl, fEndTime, ffirstrecord, FillPID(), CandRecord::FindCandHandle(), RawRecord::FindRawBlock(), fNumDeadChips, fPID, frun, fsavefile, fSec, fSimFlag, fsnarl, fStartSnarl, fStartTime, fStTrkHits, fsubrun, fTemperature, ftree, fTrkHits, fTrkInfo, fTrkOpt, fTruthHits, fUnTrkHits, fWritePID, fXTalkHits, CandDigitListHandle::GetAbsTime(), CDTrackInfo::GetAngle(), CDTracker::GetCCStripMap(), RawDigit::GetChannel(), RawDigitDataBlock::GetDatumIter(), MomNavigator::GetFragment(), RawDeadChipBlock::GetNumberOfEntries(), CandCalDetPIDHandle::GetOLChi2(), CandCalDetPIDHandle::GetPIDType(), RawRecord::GetRawHeader(), CDTrackInfo::GetResult(), RawDaqHeader::GetRun(), VldTimeStamp::GetSec(), VldContext::GetSimFlag(), RawDaqSnarlHeader::GetSnarl(), CDMapMaker::GetStripMap(), RawDaqHeader::GetSubRun(), RawDigit::GetTDC(), Calibrator::GetTemperature(), VldContext::GetTimeStamp(), CDTracker::GetTrackedStripMap(), CDTracker::GetTrackInfo(), CDPIDInfo::GetTrueParticleMomentum(), CDTruthifier::GetTruthHitInfo(), RecMinosHdr::GetVldContext(), CandCalDetPIDHandle::InCERTime(), InitialiseTree(), Calibrator::Instance(), RawChannelId::IsSameChannel(), MAXMSG, MSG, CandCalDetPIDHandle::NoOverlap(), OpenFile(), CDTruthifier::ParticleMomentum(), CDTruthifier::RecoStdHep(), CalScheme::Reset(), CDTrackInfo::SetAbsTime(), JobCResult::SetFailed(), CDTrackInfo::SetRange(), and CDTrackInfo::SetTriggerTime(). 00116 {
00117 //set the default result to passed
00118 JobCResult result(JobCResult::kPassed);
00119
00120 CandRecord* candrec=dynamic_cast<CandRecord*>
00121 (mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00122 if (candrec==0) {
00123 MSG("CDTrackerModule",Msg::kWarning)
00124 <<"No PrimaryCandidateRecord in MOM." << endl;
00125 result.SetFailed();
00126 return result;
00127 }
00128
00129 RawRecord *rr=dynamic_cast<RawRecord *>
00130 (mom->GetFragment("RawRecord"));
00131 if (rr==0) {
00132 MSG("CDTrackerModule",Msg::kWarning)
00133 <<"No RawRecord in MOM." << endl;
00134 result.SetFailed();
00135 return result;
00136 }
00137
00138 const RawDeadChipBlock* dcb=dynamic_cast<const RawDeadChipBlock*>
00139 (rr->FindRawBlock("RawDeadChipBlock"));
00140 if(dcb) {
00141 fNumDeadChips=dcb->GetNumberOfEntries();
00142 if (fNumDeadChips>0) {
00143 MAXMSG("CDTrackerModule",Msg::kDebug,100)
00144 <<"Found dead chips="<<fNumDeadChips<<endl;
00145 }
00146 }
00147 else {
00148 MAXMSG("CDTrackerModule",Msg::kWarning,10)
00149 <<"No RawDeadChipBlock present"<<endl;
00150 }
00151
00152 const RawDaqSnarlHeader* snarlHdr =
00153 dynamic_cast<const RawDaqSnarlHeader*>(rr->GetRawHeader());
00154 if(snarlHdr){
00155 fsnarl=snarlHdr->GetSnarl();
00156 fSec=snarlHdr->GetVldContext().GetTimeStamp().GetSec();
00157 fEndSnarl=fsnarl;
00158 fEndTime=fSec;
00159
00160 if(ffirstrecord) {
00161 fSimFlag=snarlHdr->GetVldContext().GetSimFlag();
00162 fStartTime=snarlHdr->GetVldContext().GetTimeStamp().GetSec();
00163 fStartSnarl=snarlHdr->GetSnarl();
00164 frun=snarlHdr->GetRun();
00165 fsubrun=snarlHdr->GetSubRun();//this isn't always right!
00166
00167 /*
00168 DbiResultPtr<DbuSubRunSummary> dsrs(snarlHdr->GetVldContext(),
00169 Dbi::kDefaultTask,
00170 Dbi::kDisabled);
00171 MSG("CDTrackerModule",Msg::kInfo)
00172 <<"Number of rows in DbuSubRunSummary="<<dsrs.GetNumRows()
00173 <<endl;
00174
00175 //get the database row
00176 if(dsrs.GetNumRows()==1) {
00177 fsubrun=dsrs.GetRow(0)->fSubRun;
00178 MSG("CDTrackerModule",Msg::kInfo)
00179 <<"Found subrun in database="<<fsubrun
00180 <<", run="<<dsrs.GetRow(0)->fRun<<endl
00181 <<"Start time="<<dsrs.GetRow(0)->fStartTime.GetSec()<<endl
00182 <<"End time ="<<dsrs.GetRow(0)->fEndTime.GetSec()<<endl;
00183 }
00184 else{
00185 MSG("CDTrackerModule",Msg::kWarning)
00186 <<"Can't find subrun in database, #rows="<<dsrs.GetNumRows()
00187 <<", fsubrun="<<fsubrun<<endl;
00188 }
00189 */
00190 MSG("CDTrackerModule",Msg::kVerbose)<<"Subrun="<<fsubrun<<endl;
00191 }
00192 }
00193 else{
00194 MSG("CDTrackerModule",Msg::kWarning)
00195 <<"No RawDaqSnarlHeader in MOM."<<endl;
00196 result.SetFailed();
00197 return result;
00198 }
00199
00200 //get the temperature from the calibrator
00201 Calibrator& cal=Calibrator::Instance();
00202 cal.Reset(snarlHdr->GetVldContext());
00203 fTemperature=cal.GetTemperature();
00204 MAXMSG("CDTrackerModule",Msg::kDebug,20)
00205 <<"Used Calibrator to get temperature="<<fTemperature<<" C"<<endl;
00206
00207 int ExtTrigTime=0;//stores external trigger time of specific channel
00208 const RawDigitDataBlock *rddb=dynamic_cast<const RawDigitDataBlock *>
00209 (rr->FindRawBlock("RawDigitDataBlock"));
00210
00211 //looping to find particular channel
00212 if (rddb) {
00213 RawChannelId id(Detector::kCalDet,ElecType::kVA,0,0x1602);
00214 id.SetModeBits(true,true,true);
00215 TIter it=rddb->GetDatumIter();
00216 while (TObject *obj=it.Next()) {
00217 RawVaDigit *rvd=dynamic_cast<RawVaDigit *>(obj);
00218 if (rvd) {
00219 RawChannelId rcid=rvd->GetChannel();
00220 if (rcid.IsSameChannel(id)) ExtTrigTime=rvd->GetTDC();
00221 }
00222 }
00223 }
00224
00225 //work out the directory to write to
00226 if(ffirstrecord) {
00227 MSG("CDTrackerModule",Msg::kDebug)
00228 <<"Opening file..."<<endl;
00229 //open the output file
00230 fsavefile=this->OpenFile(frun,fsubrun);
00231
00232 //create tree and initialise branches
00233 this->InitialiseTree();
00234 ffirstrecord=false;
00235 MSG("CDTrackerModule",Msg::kDebug)
00236 <<"... file opened and tree initialised"<<endl;
00237
00238 if (fSimFlag==SimFlag::kData){
00239 //note that only beam momentum for data is set here
00240 //for MC it is the largest stdhep TParticle momentum
00241 DbiResultPtr<CalDetBeamMomentum> cdbm(snarlHdr->GetVldContext(),
00242 Dbi::kDefaultTask,
00243 Dbi::kDisabled);
00244
00245 MSG("CDTrackerModule",Msg::kDebug)
00246 <<"Number of rows in CalDetBeamMomentum="<<cdbm.GetNumRows()
00247 <<endl;
00248
00249 //get the database row
00250 if(cdbm.GetNumRows()==1) {
00251 fBeamMomentum=cdbm.GetRow(0)->GetMomentum();
00252 MSG("CDTrackerModule",Msg::kInfo)
00253 <<"Found beam momentum in database="<<fBeamMomentum<<endl;
00254 }
00255 else{
00256 MSG("CDTrackerModule",Msg::kInfo)
00257 <<"Problem with beam momentum in database"
00258 <<", #rows="<<cdbm.GetNumRows()
00259 <<", beamMomentum="<<fBeamMomentum<<endl;
00260 }
00261 }
00262 }
00263 static Bool_t firstSnarl=true;
00264 if (firstSnarl){
00265 MSG("CDTrackerModule",Msg::kInfo)
00266 <<"Started tracking... (first snarl number="<<fsnarl
00267 <<", second="<<fSec<<")"<<endl;
00268 firstSnarl=false;
00269 }
00270
00271 if (fWritePID){
00272 //make PID Info object
00273 fPID=new CDPIDInfo();
00274
00275 //Get CandCalDetSIHandle and pass it to CDPIDInfo constructor
00276 CandCalDetSIHandle* cdsi=dynamic_cast<CandCalDetSIHandle*>
00277 (candrec->FindCandHandle("CandCalDetSIHandle"));
00278
00279 //now fill CDPIDInfo with SI info object
00280 if(cdsi) {
00281 this->FillPID(cdsi);
00282 }
00283 else{
00284 if (fSimFlag==SimFlag::kData){
00285 MSG("CDTrackerModule",Msg::kError)
00286 <<"No caldet SI handle; not filling CDPIDInfo!"<<endl;
00287 }
00288 //else simflag=MC and you don't expect to find such a handle
00289 }
00290
00291 CandCalDetPIDHandle* cdpid=dynamic_cast<CandCalDetPIDHandle*>
00292 (candrec->FindCandHandle("CandCalDetPIDHandle"));
00293
00294 //now fill CDPIDInfo object from cdpid
00295 if (cdpid){
00296 MSG("CalDetPID",Msg::kDebug)
00297 <<"Tracker::particle="<<cdpid->GetPIDType()
00298 <<", nooverlap="<<cdpid->NoOverlap()
00299 <<", inckvtime="<<cdpid->InCERTime()
00300 <<", ol chi2="<<cdpid->GetOLChi2()
00301 <<endl;
00302 this->FillPID(cdpid);
00303 }
00304 else{
00305 if (fSimFlag==SimFlag::kData){
00306 MAXMSG("CDTrackerModule",Msg::kWarning,5)
00307 <<"No caldet pid handle; not filling CDPIDInfo!"<<endl;
00308 }
00309 //else simflag=MC and you don't expect to find such a handle
00310 }
00311 }
00312
00313 //Get CandDigitList
00314 CandDigitListHandle *digitlist=dynamic_cast<CandDigitListHandle*>
00315 (candrec->FindCandHandle("CandDigitListHandle"));
00316 if(digitlist==0) {
00317 MSG("CDTrackerModule", Msg::kFatal)
00318 << "No CandDigitList in MOM." << endl;
00319 result.SetFailed();
00320 return result;
00321 }
00322
00323 //Get CandStripList
00324 CandStripListHandle *striplist=dynamic_cast<CandStripListHandle*>
00325 (candrec->FindCandHandle("CandStripListHandle"));
00326 if(striplist==0) {
00327 MSG("CDTrackerModule", Msg::kFatal)
00328 << "No CandStripList in MOM." << endl;
00329 result.SetFailed();
00330 return result;
00331 }
00332
00334 //Write the truth information
00336 if (fWriteTruth){
00337 //check if the input file is not data
00338 if (fSimFlag!=SimFlag::kData){
00339 MAXMSG("CDTrackerModule", Msg::kVerbose,5)
00340 <<"fSimFlag="<<SimFlag::AsString(fSimFlag)
00341 <<". Accessing truth info..."<<endl;
00342 //create a CDTruthifier
00343 CDTruthifier cdTruthifier;
00344 cdTruthifier.GetTruthHitInfo(mom,fTruthHits);
00345
00346 Float_t beamP=0;
00347
00348 //get the particle momentum
00349 //note that for kData the beam momentum is obtained
00350 //from the caldet database table
00351 if (fWritePID && fPID){
00352 cdTruthifier.RecoStdHep(mom,fPID);
00353 beamP=fPID->GetTrueParticleMomentum();
00354 }
00355 else if (!fPID){
00356 //still want to get the beam momentum
00357 //even if not writing the whole CDPIDInfo object
00358 beamP=cdTruthifier.ParticleMomentum(mom);
00359 }
00360
00361 //calculate the average beam momentum
00362 static Float_t count=0;
00363 MAXMSG("CDTrackerModule",Msg::kVerbose,200)
00364 <<"beamP="<<beamP<<", fBeamMomentum="<<fBeamMomentum
00365 <<", count="<<count<<endl;
00366 fBeamMomentum=fBeamMomentum*(count/(count+1))+beamP*(1/(count+1));
00367 count++;
00368 }
00369 }
00370
00371 //make a map of the strips
00372 CDMapMaker *mpmkrStrips = new CDMapMaker(striplist);
00373
00374 //cross talk removal code:
00375 CDCrossTalker xtalker(mpmkrStrips->GetStripMap(),0.9,
00376 fTrkOpt->Cosmic());
00377 xtalker.GetXTalkStripInfo(fXTalkHits);
00378
00379 //create tracker object
00380 CDTracker *tracker;
00381
00382 //pass crosstalk removed map to the tracker:
00383 //if cosmic option set, use cosmic tracker otherwise beam tracker
00384 if(fTrkOpt->Cosmic()){
00385 tracker=new CDCosmicTracker(xtalker.GetCleanStripMap(),fTrkOpt);
00386 }
00387 else{
00388 tracker=new CDBeamMuTracker(xtalker.GetCleanStripMap(),fTrkOpt);
00389 }
00390
00391 //Get track info from the tracker
00392 fTrkInfo=tracker->GetTrackInfo();
00393
00394 //Set a few things that can't be set in the CDTracker objects:
00395 fTrkInfo->SetAbsTime(digitlist->GetAbsTime());//leave as digit
00396 fTrkInfo->SetTriggerTime(ExtTrigTime);
00397
00398 //calculate pathlengths etc. for each hit in a track:
00399 CDTrackedHits trkHits(tracker->GetTrackedStripMap(PlaneView::kX),
00400 tracker->GetTrackedStripMap(PlaneView::kY),
00401 tracker->GetCCStripMap());
00402
00403 //Use angles from the track info class to calculate track quantities:
00404 trkHits.GetTrackedStripInfo(fStTrkHits,fTrkInfo->GetAngle(0),
00405 fTrkInfo->GetAngle(1));
00406
00407 //Get Cosmic counter hit info
00408 trkHits.GetCCStripInfo(fCCHits);
00409
00410 //Set trk range in TrackInfo object
00411 fTrkInfo->SetRange(trkHits.GetTrkRange());
00412
00413 //alternative way to calculate pathlengths
00414 //only necessary for beam muons
00415 if(!fTrkOpt->Cosmic()){
00416 trkHits.GetTrackedStripInfo(fTrkHits);
00417 //overwrite trk range if BeamTracker used
00418 fTrkInfo->SetRange(trkHits.GetTrkRange());
00419 }
00420
00421 //Find unidentified hits in event
00422 //need to change the cross talker
00423 CDUnidentifiedHits uihStrips
00424 (mpmkrStrips->GetStripMap(),
00425 tracker->GetTrackedStripMap(PlaneView::kX),
00426 tracker->GetTrackedStripMap(PlaneView::kY),
00427 tracker->GetCCStripMap(),
00428 xtalker.GetXTalkStripMap());
00429
00430 //get the unidentified strips
00431 uihStrips.GetUnidentifiedStripInfo(fUnTrkHits);
00432
00433 //fill tree with info:
00434 if(fTrkInfo->GetResult(0)==1 && fTrkInfo->GetResult(1)==1){
00435 ftree->Fill();
00436 }
00437 else {
00438 result.SetFailed();
00439 if(!fJustWriteTracks)
00440 ftree->Fill();
00441 }
00442
00443 //delete objects pointed to by local pointers
00444 delete tracker;
00445 delete mpmkrStrips;
00446
00447 //clear the TClonesArrays and delete objects
00448 this->CleanDataMembers();
00449
00450 return result;
00451 }
|
|
|
Definition at line 454 of file CDTrackerModule.cxx. References fCCHits, fPID, fStTrkHits, fTrkHits, fTrkInfo, fTruthHits, fUnTrkHits, and fXTalkHits. Referenced by Ana(). 00455 {
00456 //Clear TClonesArrays for next event
00457 //Note: This used to use Delete but that is slower and only
00458 //necessary for objects (stored in the TClonesArray) that
00459 //allocate their own memory
00460 fTrkHits->Clear();
00461 fStTrkHits->Clear();
00462 fCCHits->Clear();
00463 fXTalkHits->Clear();
00464 fUnTrkHits->Clear();
00465 fTruthHits->Clear();
00466
00467 //delete objects
00468 if (fTrkInfo) delete fTrkInfo;
00469 if (fPID) delete fPID;
00470
00471 //reinitialise pointers
00472 fTrkInfo=0;
00473 fPID=0;
00474
00475 //Note: Don't delete the fTrkOpt, it is only created once
00476 }
|
|
|
Implement for notification of end of job Reimplemented from JobCModule. Definition at line 583 of file CDTrackerModule.cxx. References fBeamMomentum, fEndSnarl, fEndTime, frun, fsavefile, fSimFlag, fStartSnarl, fStartTime, fsubrun, ftree, fTrkOpt, and MSG. 00584 {
00585 MSG("CDTrackerModule",Msg::kDebug)<<"Running EndJob()"<<endl;
00586
00587 if (fsavefile!=0 && fsavefile->IsWritable()){
00588 fsavefile->cd();
00589
00590 MSG("CDTrackerModule",Msg::kInfo)
00591 <<"Writing to file... "<<endl;
00592 //print where tree will be written
00593 fsavefile->pwd();
00594 ftree->Write();
00595
00596 MSG("CDTrackerModule",Msg::kDebug)
00597 <<"Creating options tree..."<<endl;
00598 TTree opt_tree("TrackerOptions","Tracker Options");
00599 opt_tree.Branch("SimFlag",&fSimFlag,"SimFlag/I",32000);
00600 opt_tree.Branch("StartTime",&fStartTime,"StartTime/I",32000);
00601 opt_tree.Branch("EndTime",&fEndTime,"EndTime/I",32000);
00602 opt_tree.Branch("StartSnarl",&fStartSnarl,"StartSnarl/I",32000);
00603 opt_tree.Branch("EndSnarl",&fEndSnarl,"EndSnarl/I",32000);
00604 opt_tree.Branch("BeamMomentum",&fBeamMomentum,
00605 "BeamMomentum/F",32000);
00606 opt_tree.Branch("Run",&frun,"run/I",32000);
00607 opt_tree.Branch("SubRun",&fsubrun,"subrun/I",32000);
00608 opt_tree.Branch("TrackerOptions","CDTrackerOptions",
00609 &fTrkOpt,8000,1);
00610
00611 MSG("CDTrackerModule",Msg::kInfo)
00612 <<"Time="<<fStartTime<<"->"<<fEndTime<<endl
00613 <<"Snarl="<<fStartSnarl<<"->"<<fEndSnarl<<endl;
00614
00615 MSG("CDTrackerModule",Msg::kDebug)<<"Filling tree..."<<endl;
00616 opt_tree.Fill();
00617 opt_tree.Write();
00618 MSG("CDTrackerModule",Msg::kInfo)<<"Closing file..."<<endl;
00619 fsavefile->Close();
00620 }
00621 else {
00622 MSG("CDTrackerModule",Msg::kWarning)
00623 <<"File not writable!"<<endl;
00624 }
00625
00626 delete fTrkHits;
00627 delete fCCHits;
00628 delete fStTrkHits;
00629 delete fXTalkHits;
00630 delete fUnTrkHits;
00631 delete fTruthHits;
00632
00633 MSG("CDTrackerModule",Msg::kDebug)
00634 <<"End of CDTrackerModule::EndJob() reached"<<endl;
00635 }
|
|
|
Definition at line 727 of file CDTrackerModule.cxx. References fPID, CandCalDetPIDHandle::GetInCERTimeBits(), CandCalDetPIDHandle::GetNoOverlapBits(), CandCalDetPIDHandle::GetOLChi2(), CandCalDetPIDHandle::GetPIDType(), CandCalDetPIDHandle::InCERTime(), MSG, CandCalDetPIDHandle::NoOverlap(), CDPIDInfo::SetInCERTime(), CDPIDInfo::SetInCERTimeBits(), CDPIDInfo::SetNoOverlap(), CDPIDInfo::SetNoOverlapBits(), CDPIDInfo::SetOLChi2(), and CDPIDInfo::SetPIDType(). 00728 {
00729 //check handle exists and fill
00730 if(cdpid) {
00731 MSG("CDTrackerModule",Msg::kVerbose)
00732 <<"Filling CDPIDInfo object with CalDetPID info"<<endl;
00733 fPID->SetPIDType(cdpid->GetPIDType());
00734 fPID->SetNoOverlap(cdpid->NoOverlap());
00735 fPID->SetInCERTime(cdpid->InCERTime());
00736 fPID->SetNoOverlapBits(cdpid->GetNoOverlapBits());
00737 fPID->SetInCERTimeBits(cdpid->GetInCERTimeBits());
00738 fPID->SetOLChi2(cdpid->GetOLChi2());
00739 }
00740 }
|
|
|
|
Implement to handle a JobCommand Reimplemented from JobCModule. Definition at line 480 of file CDTrackerModule.cxx. References fJustWriteTracks, fOverwriteFile, ftag, fTrkOpt, fWritePID, fWriteTruth, JobCommand::HaveCmd(), MSG, JobCommand::PopCmd(), JobCommand::PopFloatOpt(), JobCommand::PopIntOpt(), JobCommand::PopOpt(), CDTrackerOptions::SetAcceptance(), CDTrackerOptions::SetAngleLimit(), CDTrackerOptions::SetHitsPerPlane(), CDTrackerOptions::SetMaxHotPlanes(), CDTrackerOptions::SetMinAngle(), CDTrackerOptions::SetMinHit(), CDTrackerOptions::SetMinVertAngle(), CDTrackerOptions::SetThresh(), CDTrackerOptions::SetTrackerOptions(), and CDTrackerOptions::SetTrkLenCut(). 00481 {
00482
00483 if (cmd->HaveCmd()) { // If we have a command...
00484 string sc = cmd->PopCmd(); // Get the command
00485
00486 if (sc == "TrackOpt") {
00487 string st(cmd->PopOpt());
00488 fTrkOpt->SetTrackerOptions(st);
00489 return;
00490 }
00491
00492 else if (sc == "ADCThreshold") {
00493 fTrkOpt->SetThresh(cmd->PopFloatOpt());
00494 return;
00495 }
00496
00497 else if (sc == "MinNHits") {
00498 fTrkOpt->SetMinHit(cmd->PopIntOpt());
00499 return;
00500 }
00501
00502 else if (sc == "MinTrkLen") {
00503 fTrkOpt->SetTrkLenCut(cmd->PopIntOpt());
00504 return;
00505 }
00506
00507 else if (sc == "MaxAngle") {
00508 fTrkOpt->SetAngleLimit(cmd->PopFloatOpt());
00509 return;
00510 }
00511
00512 else if (sc == "MinAngle") {
00513 fTrkOpt->SetMinAngle(cmd->PopFloatOpt());
00514 return;
00515 }
00516
00517 else if (sc == "MinVertAngle") {
00518 fTrkOpt->SetMinVertAngle(cmd->PopFloatOpt());
00519 return;
00520 }
00521
00522 else if (sc == "SearchRange") {
00523 fTrkOpt->SetAcceptance(cmd->PopIntOpt());
00524 return;
00525 }
00526
00527 else if (sc == "HitsPerPlane") {
00528 fTrkOpt->SetHitsPerPlane(cmd->PopIntOpt());
00529 return;
00530 }
00531
00532 else if (sc == "MaxHotPlanes") {
00533 fTrkOpt->SetMaxHotPlanes(cmd->PopIntOpt());
00534 return;
00535 }
00536
00537 else if (sc == "FileID") {
00538 sprintf(ftag,"%s",cmd->PopOpt());
00539 return;
00540 }
00541
00542 else if (sc == "JustWriteTracks") {
00543 int tempNum=cmd->PopIntOpt();
00544 if(tempNum==0)
00545 fJustWriteTracks=0;
00546 if(tempNum>0)
00547 fJustWriteTracks=1;
00548 return;
00549 }
00550
00551 else if (sc == "OverwriteFile") {
00552 int tempNum=cmd->PopIntOpt();
00553 if(tempNum==0)
00554 fOverwriteFile=0;
00555 if(tempNum>0)
00556 fOverwriteFile=1;
00557 return;
00558 }
00559
00560 else if (sc == "WritePID") {
00561 int tempNum=cmd->PopIntOpt();
00562 if(tempNum==0)
00563 fWritePID=0;
00564 if(tempNum>0)
00565 fWritePID=1;
00566 return;
00567 }
00568 else if (sc == "WriteTruth") {
00569 int tempNum=cmd->PopIntOpt();
00570 if(tempNum==0)
00571 fWriteTruth=0;
00572 if(tempNum>0)
00573 fWriteTruth=1;
00574 return;
00575 }
00576 else MSG("CDTrackerModule",Msg::kWarning)
00577 << "Don't understand '" << sc.c_str() << "'\n";
00578 }
00579 }
|
|
|
Definition at line 703 of file CDTrackerModule.cxx. References fCCHits, fNumDeadChips, fPID, fSec, fsnarl, fStTrkHits, fTemperature, ftree, fTrkHits, fTrkInfo, fTruthHits, fUnTrkHits, fWritePID, and fXTalkHits. Referenced by Ana(). 00704 {
00705 //create the tree
00706 ftree=new TTree("TrackerTree","Tracker Tree");
00707
00708 //set tree branches
00709 ftree->Branch("Snarl",&fsnarl,"snarl/I",32000);
00710 ftree->Branch("NumDeadChips",&fNumDeadChips,"NumDeadChips/I",32000);
00711 ftree->Branch("Sec",&fSec,"Sec/I",32000);
00712 ftree->Branch("Temperature",&fTemperature,"Temperature/F",32000);
00713 if(fWritePID==1) ftree->Branch("PIDInfo","CDPIDInfo",&fPID,8000,1);
00714 ftree->Branch("TrackInfo","CDTrackInfo",&fTrkInfo,8000,1);
00715 ftree->Branch("TrackedHitInfo","TClonesArray",&fTrkHits,8000,1);
00716 ftree->Branch("StraightTrackedHitInfo","TClonesArray",
00717 &fStTrkHits,8000,1);
00718 ftree->Branch("CCHitInfo","TClonesArray",&fCCHits,8000,1);
00719 ftree->Branch("XTalkHitInfo","TClonesArray",&fXTalkHits,8000,1);
00720 ftree->Branch("UnTrackedHitInfo","TClonesArray",&fUnTrkHits,8000,1);
00721 if (fWriteTruth) ftree->Branch("TruthHitInfo","TClonesArray",
00722 &fTruthHits,8000,1);
00723 }
|
|
||||||||||||
|
Definition at line 639 of file CDTrackerModule.cxx. Referenced by Ana(). 00641 {
00642 //create the tfile pointer to be returned
00643 TFile* outputFile=0;
00644
00645 //get the environmental variable
00646 char *trackerdir=getenv("TRACKER_DIR");
00647
00648 //use a string to hold env instead
00649 string sTrackerDir="";
00650
00651 if (trackerdir!=NULL) {
00652 sTrackerDir=trackerdir;
00653 }
00654 else {
00655 MSG("CDTrackerModule",Msg::kInfo)
00656 <<"Environmental variable $TRACKER_DIR not set."
00657 <<" Writing file(s) to current directory"<<endl;
00658 sTrackerDir=".";
00659 }
00660
00661 //convert varaibles to string
00662 string sRunNumber=Form("%d",runNumber);
00663 string sRunNumberSub=Form("%d",runNumberSub);
00664 MSG("CDTrackerModule",Msg::kVerbose)
00665 <<"srunnumbersub="<<sRunNumberSub<<endl;
00666 //string sDetector="";
00667 string sTag=ftag;
00668 string sBase=sTrackerDir+"/Tracker"+sRunNumber+"_"+
00669 sRunNumberSub+"_"+sTag;
00670 string sFileName=sBase+".root";
00671
00672 //test if file already exists
00673 ifstream Test(sFileName.c_str());
00674
00675 //open the appropriate file
00676 if(!Test || fOverwriteFile){
00677 outputFile=new TFile(sFileName.c_str(),"RECREATE");
00678 if(fOverwriteFile) {
00679 if(Test) Test.close();
00680 }
00681 }
00682 else {
00683 //Need new filename
00684 Int_t fred=1;
00685 while(Test) {
00686 Test.close();
00687 string sAppendage=Form("%d",fred);
00688 sFileName=sBase+"_"+sAppendage+".root";
00689 Test.open(sFileName.c_str());
00690 fred++;
00691 }
00692 outputFile = new TFile(sFileName.c_str(),"NEW");
00693 outputFile->SetCompressionLevel(9);
00694 }
00695
00696 MSG("CDTrackerModule",Msg::kInfo)
00697 <<"Output file opened: "<<sFileName<<endl;
00698 return outputFile;
00699 }
|
|
|
Definition at line 54 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 78 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
|
|
Definition at line 63 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 65 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 51 of file CDTrackerModule.h. Referenced by Ana(), and CDTrackerModule(). |
|
|
Definition at line 87 of file CDTrackerModule.h. Referenced by CDTrackerModule(), and HandleCommand(). |
|
|
Definition at line 55 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and InitialiseTree(). |
|
|
Definition at line 88 of file CDTrackerModule.h. Referenced by CDTrackerModule(), and HandleCommand(). |
|
|
Definition at line 85 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), FillPID(), and InitialiseTree(). |
|
|
Definition at line 58 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 68 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 61 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and InitialiseTree(). |
|
|
Definition at line 57 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 60 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and InitialiseTree(). |
|
|
Definition at line 62 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 64 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 76 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
|
|
Definition at line 59 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and EndJob(). |
|
|
Definition at line 66 of file CDTrackerModule.h. Referenced by CDTrackerModule(), and HandleCommand(). |
|
|
Definition at line 56 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), and InitialiseTree(). |
|
|
Definition at line 72 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), EndJob(), and InitialiseTree(). |
|
|
Definition at line 75 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
|
|
Definition at line 74 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
|
|
Definition at line 70 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), EndJob(), and HandleCommand(). |
|
|
Definition at line 83 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
|
|
Definition at line 80 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
|
|
Definition at line 89 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), HandleCommand(), and InitialiseTree(). |
|
|
Definition at line 90 of file CDTrackerModule.h. Referenced by CDTrackerModule(), and HandleCommand(). |
|
|
Definition at line 79 of file CDTrackerModule.h. Referenced by Ana(), CDTrackerModule(), CleanDataMembers(), and InitialiseTree(). |
1.3.9.1