--- PamelaLevel2/src/PamLevel2.cpp 2008/04/03 14:39:51 1.61 +++ PamelaLevel2/src/PamLevel2.cpp 2008/11/06 10:45:36 1.65 @@ -284,6 +284,7 @@ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; candeleteobj = 0; pscore = 0; iscore = 0; @@ -295,17 +296,19 @@ /** * Constructor */ -PamTrack::PamTrack(TrkTrack* t, CaloTrkVar* c, ToFTrkVar* o){ +PamTrack::PamTrack(TrkTrack* t, CaloTrkVar* c, ToFTrkVar* o, OrbitalInfoTrkVar *r){ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; // if(t)trk_track = new TrkTrack(*t); // if(c)calo_track = new CaloTrkVar(*c); // if(o)tof_track = new ToFTrkVar(*o); if(t)trk_track = t; if(c)calo_track = c; if(o)tof_track = o; + if(r)orb_track = r; candeleteobj = 0; }; @@ -314,13 +317,16 @@ TrkTrack *t = track.trk_track; CaloTrkVar *c = track.calo_track; ToFTrkVar *o = track.tof_track; + OrbitalInfoTrkVar *r = track.orb_track; trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; if(t)trk_track = new TrkTrack(*t); if(c)calo_track = new CaloTrkVar(*c); if(o)tof_track = new ToFTrkVar(*o); + if(r)orb_track = new OrbitalInfoTrkVar(*r); candeleteobj = 1; } @@ -331,10 +337,12 @@ if(trk_track) trk_track->TrkTrack::Clear(); if(calo_track) calo_track->CaloTrkVar::Clear();//??? if(tof_track) tof_track->ToFTrkVar::Clear();//??? + if(orb_track) orb_track->OrbitalInfoTrkVar::Clear();//??? }else{ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; } pscore = 0; iscore = 0; @@ -355,6 +363,10 @@ tof_track->ToFTrkVar::Clear();//??? delete tof_track; } + if(orb_track){ + orb_track->OrbitalInfoTrkVar::Clear();//??? + delete orb_track; + } }else{ Clear(); } @@ -710,7 +722,7 @@ Bool_t PamLevel2::IsGood(){ Bool_t goodev=true; - // if(trk2_obj && trk2_obj->UnpackError() != 0 ) goodev = false; + if(trk2_obj && trk2_obj->UnpackError() != 0 ) goodev = false; if(calo2_obj && calo2_obj->good != 1) goodev = false; if(tof_obj && tof_obj->unpackError != 0) goodev = false; if(trig_obj && trig_obj->unpackError != 0) goodev = false; @@ -744,7 +756,10 @@ return &trk2_obj; }; if(!objname.CompareTo("TrkHough")) { - if(!trkh_obj) trkh_obj = new TrkHough(); + if(!trkh_obj) { + trkh_obj = new TrkHough(); + trkh_obj->Set(); + } return &trkh_obj; }; if(!objname.CompareTo("CaloLevel1")) { @@ -866,7 +881,40 @@ // //-------------------------------------- /** - * Give the pamela track associated to a tracker track, retrieving related calorimeter and tof track information. + * Retrieves the OrbitalInfo track matching the seqno-th tracker stored track. + * (If seqno = -1 retrieves the tracker-independent tof related track) + */ +OrbitalInfoTrkVar *PamLevel2::GetOrbitalInfoStoredTrack(int seqno){ + + if( !orb_obj )return 0; + + if( orb_obj->OrbitalInfo::ntrk()==0 ){ + cout << "PamLevel2::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo "<< seqno <<" but no OrbitalInfo tracks are stored"<OrbitalInfo::GetOrbitalInfoTrkVar(it_tof); + it_tof++; + } while( c && seqno != c->trkseqno && it_tof < orb_obj->OrbitalInfo::ntrk()); + + if(!c || seqno != c->trkseqno){ + c = 0; + if(seqno!=-1)cout << "PamLevel2::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo "<< seqno <<" does not match OrbitalInfo stored tracks"<GetSeqNo()); if(TOF) o = GetToFStoredTrack(t->GetSeqNo()); + if(ORB) r = GetOrbitalInfoStoredTrack(t->GetSeqNo()); // if(t && c && o)track = new PamTrack(t,c,o); - PamTrack *track = new PamTrack(t,c,o); + PamTrack *track = new PamTrack(t,c,o,r); return track; @@ -898,7 +948,7 @@ PamTrack* PamLevel2::GetStoredTrack(Int_t itrk){ cout <<"PamLevel2::GetStoredTrack(Int_t itrk) **to-be-updated** "<TrkLevel2::GetTrack(i); //tracker CaloTrkVar *cp = GetCaloStoredTrack(tp->GetSeqNo()); ToFTrkVar *op = GetToFStoredTrack(tp->GetSeqNo()); + OrbitalInfoTrkVar *rp = GetOrbitalInfoStoredTrack(tp->GetSeqNo()); TrkTrack *ti = 0; //tracker (image) CaloTrkVar *ci = 0; ToFTrkVar *oi = 0; + OrbitalInfoTrkVar *ri = 0; // cout << "trk track n. "<TrkLevel2::GetTrackImage(i); //tracker (image) ci = GetCaloStoredTrack(ti->GetSeqNo()); oi = GetToFStoredTrack(ti->GetSeqNo()); + ri = GetOrbitalInfoStoredTrack(ti->GetSeqNo()); // cout << "its image "<SetPScore(totp_score); ((PamTrack*)(ttsorted[i]))->SetIScore(toti_score); @@ -2532,26 +2589,10 @@ if( GetOrbitalInfo() ){ abstime = GetOrbitalInfo()->absTime; obt = GetOrbitalInfo()->OBT; -// cout << " ABS >>> "<>> "<RUNHEADER_TIME; obt = GetRunInfo()->RUNHEADER_OBT; } -// cout << ISGP << " "<RUNHEADER_TIME; // BARBATRUCCO -// obt = GetRunInfo()->RUNHEADER_OBT; // BARBATRUCCO -// } // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- @@ -2570,72 +2611,41 @@ } totdltime[2]++; } -// cout << setw(10)<absTime; -// obt = GetOrbitalInfo()->OBT; -// } -// // --------------------------------------------------------------- -// // the absolute time is necessary to relate the event with the run -// // --------------------------------------------------------------- -// if( !GetOrbitalInfo() && !ISGP ){ -// cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- ERROR -- missing OrbitalInfo "<GetEntry(irun); - -// if( ISGP && run_tree->GetEntries()!=1 ){ -// cout << "** WARNING ** simulated files are assumed to have 1 single run, not "<< run_tree->GetEntries() << endl; -// cout << "** WARNING ** run will not be updated"<RUNHEADER_TIME; // BARBATRUCCO -// obt = GetRunInfo()->RUNHEADER_OBT; // BARBATRUCCO -// } // bool fromfirst = true; // first loop over runs -// Bool_t hasfrag = false; -// if( GetRunInfo()->ID_RUN_FRAG!=0 && GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID)hasfrag=true; -// ULong64_t fragid = GetRunInfo()->ID_RUN_FRAG; // ------------------------------------------------------ // loop over runs to find the one that contains the event // ------------------------------------------------------ while ( ( - ( - !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) - abstime <= GetRunInfo()->RUNTRAILER_TIME) && - !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) - obt <= GetRunInfo()->RUNTRAILER_OBT) - ) - || GetRunInfo()->NEVENTS==0 +// ( +// !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) +// abstime <= GetRunInfo()->RUNTRAILER_TIME) && +// !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) +// obt <= GetRunInfo()->RUNTRAILER_OBT) +// ) + + !(abstime >= GetRunInfo()->RUNHEADER_TIME && // check on absolute time (s) + abstime <= GetRunInfo()->RUNTRAILER_TIME) + || + !(obt >= GetRunInfo()->RUNHEADER_OBT && // additional check on OBT (ms) + obt <= GetRunInfo()->RUNTRAILER_OBT) + || + GetRunInfo()->NEVENTS==0 // || !(irunentry < GetRunInfo()->NEVENTS-1-prevshift) // ERRORE!!! fa saltare i run con 1 evento - || !(irunentry <= GetRunInfo()->NEVENTS-1-prevshift) + || + !(irunentry <= GetRunInfo()->NEVENTS-1-prevshift) ) && irun < run_tree->GetEntries() ){ + +// if( !(abstime >= GetRunInfo()->RUNHEADER_TIME &&abstime <= GetRunInfo()->RUNTRAILER_TIME) )cout << "ABS TIME "<RUNTRAILER_TIME <= GetRunInfo()->RUNHEADER_OBT && obt <= GetRunInfo()->RUNTRAILER_OBT) )cout << "OBT TIME "<< obt <<" "<< GetRunInfo()->RUNTRAILER_OBT << endl; +// if( GetRunInfo()->NEVENTS==0 )cout <<"GetRunInfo()->NEVENTS==0 "<NEVENTS-1-prevshift) ) cout << "irunentry > "<NEVENTS-1-prevshift << endl; // - - - - - - - - - - - - - // irunentry = position of current entry, relative to the run // prevshift = shift needed to synchronize l0 and l2 data (nested events) @@ -2645,35 +2655,35 @@ // store dead and live-time of previous run // ----------------------------------------- // if(SELLI==0){ - if(fromfirst){ - if(oldrun==irun){ - /// decrement counters - if( GetTrigLevel2()){ - totdltime[0]-=GetTrigLevel2()->dltime[0];//live-time - totdltime[1]-=GetTrigLevel2()->dltime[1];//dead-time - } - totdltime[2]--; //event counter - cout << endl; - cout << "n.events : "<dltime[0];//live-time + totdltime[1]-=GetTrigLevel2()->dltime[1];//dead-time } - /// add an entry - if(run_tree_clone) - if(run_tree_clone->GetBranch("DeadLiveTime")->GetEntries() < run_tree->GetEntries()) - run_tree_clone->GetBranch("DeadLiveTime")->Fill(); - /// reset counters - if( GetTrigLevel2() ){ - totdltime[0]=GetTrigLevel2()->dltime[0];//live-time - totdltime[1]=0; //dead-time - } - totdltime[2]=1; //event counter + totdltime[2]--; //event counter + cout << endl; + cout << "n.events : "<GetBranch("DeadLiveTime")->GetEntries() < run_tree->GetEntries()) + run_tree_clone->GetBranch("DeadLiveTime")->Fill(); + /// reset counters + if( GetTrigLevel2() ){ + totdltime[0]=GetTrigLevel2()->dltime[0];//live-time + totdltime[1]=0; //dead-time } + totdltime[2]=1; //event counter + } // } irun++; @@ -2704,7 +2714,7 @@ if(irun>0)runfirstentry += (GetRunInfo()->NEVENTS)-prevshift; irunentry = 0; prevshift = 0; - run_tree->GetEntry(irun); + run_tree->GetEntry(irun);//update runinfo irunt = irun - irunoffset[run_tree->GetTreeNumber()]; if(GetRunInfo()->RUNHEADER_OBT>GetRunInfo()->RUNTRAILER_OBT ){ cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- WARNING -- irun "<=RUNTRAILER_OBT " < exit with TRUE // -------------------------------------- - cout << endl << " ))))) UPDATE RUN INFO ((((( @iev "<ID<<" irun "<ID<<" irun "<IsConnected()) )SetDBConnection(); + TrkParams::Set(GetRunInfo() ,dbc); + if(dbc)dbc->Close(); + // ---------------------------------------------------- // then check if the run has a fragment // in this case we have to switch to the next fragment @@ -2741,6 +2757,7 @@ if( GetRunInfo()->ID_RUN_FRAG != 0 && // GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID && + DBG && true ){ cout << "* fragment *"<GetTreeNumber()]; while ( ( @@ -2786,8 +2803,6 @@ cout << " obt "<> "<RUNHEADER_OBT<<" "<RUNTRAILER_OBT; cout << " *** JUMP RUN *** irun "<> "<RUNHEADER_OBT<<" "<RUNTRAILER_OBT; } - cout << endl; - cout << endl << " ))))) UPDATE RUN INFO ((((( @iev "<ID<<" (run-entry "<ID<<" (run-entry "<IsConnected()) )SetDBConnection(); + TrkParams::Set(GetRunInfo() ,dbc); + if(dbc)dbc->Close(); // cout << endl; prevshift = 0; return true; @@ -3892,17 +3914,17 @@ // } if ( TRK0 ){ - TrkParams::Load(6); - if( !TrkParams::IsLoaded(6) ){ - cout << " TTree* PamLevel2::GetYodaTree( ) -- WARNING -- VK-mask not loaded"<IsConnected()))SetDBConnection(); +// TrkParams::Load(6); +// if( !TrkParams::IsLoaded(6) ){ +// cout << " TTree* PamLevel2::GetYodaTree( ) -- WARNING -- VK-mask not loaded"<IsConnected()))SetDBConnection(); TrkParams::SetCalib(run_obj,dbc); TrkParams::LoadCalib( ); if( !TrkParams::CalibIsLoaded() ){ cout << " TTree* PamLevel2::GetYodaTree( ) -- WARNING -- Calibration not loaded"<Close(); // EMILIANO, do not leave open connections, open only when needed +// if(dbc)dbc->Close(); // EMILIANO, do not leave open connections, open only when needed } @@ -3971,8 +3993,8 @@ do{ if(shift>0){ cout << " PKTNUM L2 --- "<< pktn << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<ID << " ID_ROOT_L0 "<ID_ROOT_L0<<" ID_RUN_FRAG "<ID_RUN_FRAG << " EV_FROM "<EV_FROM < L0 mismatch ( irun "<ID << " ID_ROOT_L0 "<ID_ROOT_L0<<" ID_RUN_FRAG "<ID_RUN_FRAG << " EV_FROM "<EV_FROM < L0 mismatch ( irun "<GetEntry(quellagiusta+(Long64_t)shift+(Long64_t)prevshift); shift++; @@ -4020,6 +4042,7 @@ */ Bool_t PamLevel2::SetDBConnection(){ +// cout << "PamLevel2::SetDBConnection()" << endl; if(DBG){ cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<