--- PamelaLevel2/src/PamLevel2.cpp 2008/03/11 13:48:40 1.60 +++ PamelaLevel2/src/PamLevel2.cpp 2009/01/27 11:37:39 1.75 @@ -284,6 +284,7 @@ trk_track = 0; calo_track = 0; tof_track = 0; + orb_track = 0; candeleteobj = 0; pscore = 0; iscore = 0; @@ -295,18 +296,21 @@ /** * 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; - candeleteobj = 0; + if(r) orb_track = r; + + candeleteobj = 0; }; PamTrack::PamTrack(const PamTrack& track){ @@ -314,13 +318,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 +338,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 +364,10 @@ tof_track->ToFTrkVar::Clear();//??? delete tof_track; } + if(orb_track){ + orb_track->OrbitalInfoTrkVar::Clear();//??? + delete orb_track; + } }else{ Clear(); } @@ -391,6 +404,11 @@ GetRunTree(listf); }; +PamLevel2::PamLevel2(TString ddir,TList *list,TString detlist){ + Initialize(); + GetPamTree(list,detlist); + GetRunTree(list); +}; /** * Constructor * @param ddir Name of directory where level2 files are stored. @@ -431,6 +449,7 @@ irunt = -1LL; runfirstentry = 0LL; runlastentry = 0LL; + gltsync = 0; // Emiliano l0_file = NULL; l0_tree = NULL; @@ -540,6 +559,8 @@ dbc->Close(); delete dbc; } + + if ( gltsync ) delete gltsync; if(l0_file)l0_file->Close(); // if(pam_tree)pam_tree->Delete();; @@ -708,17 +729,24 @@ // }; -Bool_t PamLevel2::IsGood(){ - Bool_t goodev=true; - // if(trk2_obj && trk2_obj->UnpackError() != 0 ) goodev = false; - if(calo2_obj && calo2_obj->good != 1) goodev = false; +Bool_t PamLevel2::IsGood(Bool_t strict){ + Bool_t goodev=true; + // + if(calo2_obj && !calo2_obj->IsGood(strict) ) goodev = false; + // + if ( strict ){ + if(trk2_obj && trk2_obj->UnpackError() != 0 ) goodev = false; if(tof_obj && tof_obj->unpackError != 0) goodev = false; if(trig_obj && trig_obj->unpackError != 0) goodev = false; if(s4_obj && s4_obj->unpackError != 0) goodev = false; if(nd_obj && nd_obj->unpackError != 0) goodev = false; - if(ac_obj && ac_obj->unpackError != 255) goodev = false; + if(ac_obj && (ac_obj->unpackError != 0 || ((ac_obj->status[0]>>2)&1) || ((ac_obj->status[1]>>2)&1)) ) goodev = false; // if(orb_obj) - return goodev; + } else { + if(nd_obj && nd_obj->unpackError != 0) goodev = false; + if(ac_obj && (ac_obj->unpackError != 0 || ((ac_obj->status[0]>>2)&1) || ((ac_obj->status[1]>>2)&1)) ) goodev = false; + }; + return(goodev); }; //-------------------------------------- @@ -744,7 +772,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")) { @@ -781,10 +812,17 @@ if(!ac_obj) ac_obj = new AcLevel2(); return &ac_obj; }; - if(!objname.CompareTo("OrbitalInfo")){ - if(!orb_obj) orb_obj = new OrbitalInfo(); + if(!objname.CompareTo("OrbitalInfo")) { + if(!orb_obj){ + orb_obj = new OrbitalInfo(); + orb_obj->Set(); + } return &orb_obj; }; +// if(!objname.CompareTo("OrbitalInfo")){ +// if(!orb_obj) orb_obj = new OrbitalInfo(); +// return &orb_obj; +// }; if(!objname.CompareTo("GPamela")){ if(!gp_obj) gp_obj = new GPamela(); return &gp_obj; @@ -866,7 +904,72 @@ // //-------------------------------------- /** - * 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 ){ +// // TRICK BEGIN +// OrbitalInfoTrkVar *r = new OrbitalInfoTrkVar(); // TEMPORARY TRICK +// Int_t nn = 0; +// TClonesArray &tor = *orb_obj->OrbitalInfoTrk; +// for(Int_t nt=0; nt < tof_obj->ToFLevel2::ntrk(); nt++){ +// // +// ToFTrkVar *ptt = tof_obj->ToFLevel2::GetToFTrkVar(nt); +// if ( ptt->trkseqno != -1 ){ +// // +// r->trkseqno = ptt->trkseqno; +// // +// r->Eij = 0; +// // +// r->Sij = 0; +// // +// r->pitch = -1000.; +// // +// r->cutoff = -1000.; +// // +// new(tor[nn]) OrbitalInfoTrkVar(*r); +// nn++; +// // +// r->Clear(); +// // +// }; +// }; +// delete r; +// OrbitalInfoTrkVar *c = 0; +// c = orb_obj->OrbitalInfo::GetOrbitalInfoTrkVar(0); +// return c; +// //TRICK END + 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 +1003,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); @@ -1522,31 +1634,6 @@ */ PamTrack *PamLevel2::GetTrackImage(int it){ -// if(!trk2_obj) return 0; - -// // *-*-*-*-*-*-*-*-*-*-*-*-* -// SortTracks("+CAL+TOF"); -// // *-*-*-*-*-*-*-*-*-*-*-*-* -// // if(!sorted_tracks)return 0; -// if(sorted_tracks.IsEmpty())return 0; - -// PamTrack *image = 0; - -// if( it >=0 && it < trk2_obj->TrkLevel2::GetNTracks() ){ -// TrkTrack *temp = (TrkTrack*)sorted_tracks.At(it); -// if( temp->HasImage() ){ -// TrkTrack *t = trk2_obj->TrkLevel2::GetStoredTrack(temp->GetImageSeqNo()); -// image = GetPamTrackAlong(t); -// }else{ -// cout <<"PamLevel2::GetTrackImage(int) : Track SeqNo "<>> Found selection-list <<<"<>> Found selection-list <<<"<cd(); @@ -2170,8 +2257,11 @@ if(GP) { // GetPointerTo("GPamela"); if(!gp_obj)gp_obj = new GPamela(); - gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri -// t->SetBranchAddress("GPamela", GetPointerTo("GPamela")); +// gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri +// // t->SetBranchAddress("GPamela", GetPointerTo("GPamela")); + if(SELLI) t->SetBranchAddress("GPamela", GetPointerTo("GPamela")); + else gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri + cout << "h20 : set branch address GPamela "<SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri + if(SELLI) t->SetBranchAddress("GPamela", GetPointerTo("GPamela")); + else gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri +// gp_obj->SetBranchAddress(t); //ho dovuto fare in maniera diversa dagli altri cout << "h20 : set branch address GPamela "<GetEntry(irun); if( !GetOrbitalInfo() )cout << "** WARNING ** missing OrbitalInfo ---> run info might be not correctly updated "<IsConnected()) )SetDBConnection(); //Emiliano + gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0,"ID",dbc,false); //Emiliano // the "false" means not to use level0 file (not necessary here) + if ( dbc ) dbc->Close();// Emiliano }; // --------------------------------------------------------------- // retrieve OBT and absolute time of the event // --------------------------------------------------------------- ULong64_t abstime = 0LL; - ULong64_t obt = 0LL; + // ULong64_t obt = 0LL; // Emiliano + Long64_t obt = 0LL; // Emiliano, Long64_t GL_TIMESYNC::DBobt(UInt_t obt) since depending on the situation OBT is lowered or boosted if( GetOrbitalInfo() ){ abstime = GetOrbitalInfo()->absTime; - obt = GetOrbitalInfo()->OBT; -// cout << " ABS >>> "<>> "<DBobt(GetOrbitalInfo()->OBT); // Emiliano }else{ abstime = GetRunInfo()->RUNHEADER_TIME; - obt = GetRunInfo()->RUNHEADER_OBT; + obt = gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT); // Emiliano } -// cout << ISGP << " "<RUNHEADER_TIME; // BARBATRUCCO -// obt = GetRunInfo()->RUNHEADER_OBT; // BARBATRUCCO -// } // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- // if it is a full file (not preselected) // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - if(SELLI==0){ + if(SELLI==0 || SELLI==2){ // Emiliano // --------------------------------------------------------------- // increment dead and live-time counters @@ -2590,72 +2671,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 >= gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT) && // additional check on OBT (ms) // Emiliano + obt <= gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT)) // Emiliano + || + 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) @@ -2665,36 +2715,38 @@ // 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++; // ------------------------------------ @@ -2724,9 +2776,13 @@ 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 ){ + if ( gltsync ) delete gltsync; // Emiliano + if(!dbc || (dbc && !dbc->IsConnected()) )SetDBConnection(); //Emiliano + gltsync = new GL_TIMESYNC(GetRunInfo()->ID_ROOT_L0,"ID",dbc); // Emiliano + if ( dbc ) dbc->Close(); // Emiliano + if(gltsync->DBobt(GetRunInfo()->RUNHEADER_OBT)>gltsync->DBobt(GetRunInfo()->RUNTRAILER_OBT) ){ // Emiliano 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 @@ -2761,6 +2823,7 @@ if( GetRunInfo()->ID_RUN_FRAG != 0 && // GetRunInfo()->ID_RUN_FRAG != GetRunInfo()->ID && + DBG && true ){ cout << "* fragment *"<GetTreeNumber()]; while ( ( @@ -2806,8 +2869,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; @@ -3580,15 +3648,16 @@ // ------------------------------------ // add branch with dead and live times // ------------------------------------ - run_tree_clone->Branch("DeadLiveTime",totdltime,"dltime[3]/l"); - cout << "Run : branch DeadLiveTime"<Branch("DeadLiveTime",totdltime,"dltime[3]/l"); + cout << "Run : branch DeadLiveTime"<Branch("RunEntry",&irun,"runentry/L"); - sel_tree_clone->Branch("RunEntry",&irunt,"runentry/L");//NEWNEW - sel_tree_clone->Branch("EventEntry",&irunentry,"eventry/L"); - + sel_tree_clone = new TTree("SelectionList","List of selected events "); + // sel_tree_clone->Branch("RunEntry",&irun,"runentry/L"); + sel_tree_clone->Branch("RunEntry",&irunt,"runentry/L");//NEWNEW + sel_tree_clone->Branch("EventEntry",&irunentry,"eventry/L"); + }; Int_t i=0; if(TRK1||TRK2||TRKh){ @@ -3661,14 +3730,14 @@ }; // OrbitalInfo if(ORB) { - pam_tree_clone[i] = new TTree("OrbitalInfo","PAMELA oribital info "); + pam_tree_clone[i] = new TTree("OrbitalInfo","PAMELA orbital info "); pam_tree_clone[i]->Branch("OrbitalInfo","OrbitalInfo", GetPointerTo("OrbitalInfo")); cout << "OrbitalInfo : branch OrbitalInfo"<Branch("GPamela","GPamela", GetPointerTo("GPamela"),32000,1);//split cout << "OrbitalInfo : branch OrbitalInfo"<GetName()<GetBranch("DeadLiveTime")->GetEntries() < run_tree->GetEntries()) + if ( SELLI != 2){// Emiliano + if(run_tree_clone->GetBranch("DeadLiveTime")->GetEntries() < run_tree->GetEntries()) run_tree_clone->GetBranch("DeadLiveTime")->Fill(); + }; run_tree_clone->Write(); - cout << sel_tree_clone->GetName()<Write(); + if ( SELLI != 2){ //Emiliano + cout << sel_tree_clone->GetName()<Write(); + }; for(Int_t i=0; iGetName()<Fill(); // cout << "PamLevel2::GetEntry("<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 } @@ -3991,8 +4064,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++; @@ -4025,7 +4098,7 @@ && (quellagiusta+(Long64_t)shift) < GetYodaTree()->GetEntries() && shift < maxshift); if ( (quellagiusta+(Long64_t)shift+(Long64_t)prevshift) > GetYodaTree()->GetEntries() || shift == maxshift ) { - cout << " Big trouble here, no such event in Level0 data! " <IsConnected() )return false; @@ -4052,7 +4128,7 @@ myquery.str(""); // EMILIANO myquery << "SET time_zone='+0:00'"; // EMILIANO dbc->Query(myquery.str().c_str()); // EMILIANO - cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<