786{
787
788
789
790
791
792 if(!tree) return(0);
793
795 TBranch *b_s=0, *b_s1=0, *b_s2=0;
796 b_s = tree->GetBranch("s.");
797 b_s1 = tree->GetBranch("s1.");
798 b_s2 = tree->GetBranch("s2.");
799 b_s->SetAddress( &
s );
800
801
802
803
804 b_s1->SetAddress( &
s2 );
805 b_s2->SetAddress( &
s1 );
806
807 int nentr = (int)(tree->GetEntries());
808
809 if (!usebuffer) {
810
811 char data[2048];
812 for(int i=0; i<nentr; i++ ) {
813 b_s->GetEntry(i);
814 b_s1->GetEntry(i);
815 b_s2->GetEntry(i);
816
817
820 int id_up = id_view_up *100000 + 10000*2 +
s1->
ID();
821 int id_down = id_view_down*100000 + 10000*1 +
s2->
ID();
822
823 sprintf(data,"%s, %s, %d, %2f, %2f, %2f, %2f, %2f, %2f, NULL, %2f, %d, %d, %d, %d",
824 id_eventbrick, id_zone, i,
s->X(),
s->Y(),
s->TX(),
s->TY(),
s->W(),
s->Volume(),
s->Chi2(),
825 1, id_down, 2, id_up);
827 }
828
829 Log(2,
"AddBaseTracks",
"Basetracks added (without buffering): %d basetracks added assuming microtracks previously added",nentr);
830
831 } else {
832
833 try{
836
837 char ID_EVENTBRICK[10000][50],ID_ZONE[10000][50];
838 int ID[10000];
839 float POSX[10000],POSY[10000],SLOPEX[10000],SLOPEY[10000];
840 int GRAINS[10000],AREASUM[10000];
841 float SIGMA[10000];
842 int ID_DOWNSIDE[10000],ID_DOWNTRACK[10000],ID_UPSIDE[10000],ID_UPTRACK[10000];
843 ub2 SINT[10000],SFLOAT[10000],SID_EVENTBRICK[10000],SID_ZONE[10000];
844
845
846
847
848
849
850 int nstep = nentr/10000+1;
851
852 for(int istep=0; istep<nstep; istep++ ) {
853
854 char query[2048];
855 sprintf(query,"\
856 INSERT INTO OPERA.TB_MIPBASETRACKS \
857 (ID_EVENTBRICK, ID_ZONE, ID, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA, ID_DOWNSIDE, ID_DOWNTRACK, ID_UPSIDE, ID_UPTRACK) \
858 VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14)");
859 fStmt->setSQL(query);
860
861 int ibt=0;
862
863 for(int ibasetrack=10000*istep; (ibasetrack<nentr && ibasetrack<10000*(istep+1)); ibasetrack++ ) {
864
865 b_s->GetEntry(ibasetrack);
866 b_s1->GetEntry(ibasetrack);
867 b_s2->GetEntry(ibasetrack);
868
869
870
871
874 int id_up = id_view_up *100000 + 10000*2 +
s1->
ID();
875 int id_down = id_view_down*100000 + 10000*1 +
s2->
ID();
876
877 sprintf(ID_EVENTBRICK[ibt],"%s%c",id_eventbrick,0);
878 sprintf(ID_ZONE[ibt],"%s%c",id_zone,0);
879 ID[ibt]=ibasetrack;
884 GRAINS[ibt]=(int)
s->W();
885 AREASUM[ibt]=(int)
s->Volume();
886 SIGMA[ibt]=
s->Chi2();
887 ID_DOWNSIDE[ibt]=1;
888 ID_DOWNTRACK[ibt]=id_down;
889 ID_UPSIDE[ibt]=2;
890 ID_UPTRACK[ibt]=id_up;
891
892 SID_EVENTBRICK[ibt]=strlen(ID_EVENTBRICK[ibt])+1;
893 SID_ZONE[ibt]=strlen(ID_ZONE[ibt])+1;
894 SINT[ibt]=sizeof(int);
895 SFLOAT[ibt]=sizeof(float);
896
898 printf("buffer %d/%d: filling basetrack buffers... %2.0f%%\r",istep+1,nstep,100.*ibasetrack/nentr);
900 }
901 ibt++;
902 }
904
905 fStmt->setDataBuffer( 1, ID_EVENTBRICK, OCCI_SQLT_STR,
sizeof(ID_EVENTBRICK[0]), (
unsigned short *) &SID_EVENTBRICK);
906 fStmt->setDataBuffer( 2, ID_ZONE, OCCI_SQLT_STR,
sizeof(ID_ZONE[0]), (
unsigned short *) &SID_ZONE);
907 fStmt->setDataBuffer( 3, ID, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
908 fStmt->setDataBuffer( 4, POSX, OCCIFLOAT,
sizeof(
float), (
unsigned short *) &SFLOAT);
909 fStmt->setDataBuffer( 5, POSY, OCCIFLOAT,
sizeof(
float), (
unsigned short *) &SFLOAT);
910 fStmt->setDataBuffer( 6, SLOPEX, OCCIFLOAT,
sizeof(
float), (
unsigned short *) &SFLOAT);
911 fStmt->setDataBuffer( 7, SLOPEY, OCCIFLOAT,
sizeof(
float), (
unsigned short *) &SFLOAT);
912 fStmt->setDataBuffer( 8, GRAINS, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
913 fStmt->setDataBuffer( 9, AREASUM, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
914 fStmt->setDataBuffer(10, SIGMA, OCCIFLOAT,
sizeof(
float), (
unsigned short *) &SFLOAT);
915 fStmt->setDataBuffer(11, ID_DOWNSIDE, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
916 fStmt->setDataBuffer(12, ID_DOWNTRACK, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
917 fStmt->setDataBuffer(13, ID_UPSIDE, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
918 fStmt->setDataBuffer(14, ID_UPTRACK, OCCIINT,
sizeof(
int), (
unsigned short *) &SINT);
919 fStmt->executeArrayUpdate(ibt);
920
921 char commit[10]="commit";
923
924 }
925
926 } catch (SQLException &oraex) {
927 Error("TOracleServerE2W", "AddBaseTracksWithBuffer; failed: (error: %s)", (oraex.getMessage()).c_str());
928 }
929
930 Log(2,
"AddBaseTracksWithBuffer",
"Basetracks added (with buffering): %d basetracks added assuming microtracks previously added",nentr);
931
932 }
933
934 return nentr;
935}
Int_t ID() const
Definition: EdbSegP.h:147
Int_t Aid(int i) const
Definition: EdbSegP.h:169
Int_t AddBaseTrack(char *database)
Definition: TOracleServerE2W.cxx:370
gEDBDEBUGLEVEL
Definition: energy.C:7
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30