/[PAMELA software]/eventviewer/flight/src/FEVdetector.cpp
ViewVC logotype

Diff of /eventviewer/flight/src/FEVdetector.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by mocchiut, Mon Feb 26 12:51:09 2007 UTC revision 1.21 by mocchiut, Thu Nov 8 11:05:34 2007 UTC
# Line 46  char* operator+( std::streampos&, char* Line 46  char* operator+( std::streampos&, char*
46  #include <TEllipse.h>  #include <TEllipse.h>
47  #include <TArrow.h>  #include <TArrow.h>
48  #include <TStyle.h>  #include <TStyle.h>
49    #include <TStreamerElement.h>
50    #include <TRealData.h>
51  //  //
52  #include <PamelaRun.h>  #include <PamelaRun.h>
53  #include <physics/calorimeter/CalorimeterEvent.h>  #include <physics/calorimeter/CalorimeterEvent.h>
# Line 67  char* operator+( std::streampos&, char* Line 69  char* operator+( std::streampos&, char*
69  #include <FEVdetector.h>  #include <FEVdetector.h>
70  #include <FEventViewer.h>  #include <FEventViewer.h>
71  #include <feventvstruct.h>  #include <feventvstruct.h>
72    #include <color.h>
73  //  //
74  extern Bool_t existfile(TString);  extern Bool_t existfile(TString);
75  //  //
# Line 80  FEVdetector::FEVdetector(TString filenam Line 83  FEVdetector::FEVdetector(TString filenam
83    thefigure = &figure;    thefigure = &figure;
84    checkctrlword();    checkctrlword();
85    var.selex = false;    var.selex = false;
86      var.showall = false;
87    
88      var.showsi = false;
89      var.shownd = false;
90      var.shows4 = false;
91      var.showorb = false;
92      var.showtof = false;
93      var.showtrg = false;
94      var.showtrk = false;
95      var.showcal = false;
96      var.showrun = false;
97      var.showac = false;
98  }  }
99    
100  void FEVdetector::checkctrlword(){  void FEVdetector::checkctrlword(){
# Line 88  void FEVdetector::checkctrlword(){ Line 103  void FEVdetector::checkctrlword(){
103    var.AC = 0;    var.AC = 0;
104    var.RUN = 1;    var.RUN = 1;
105    var.TRK = 0;    var.TRK = 0;
106      var.ORB = 1;
107      var.TRG = 1;
108    var.CALO = 0;    var.CALO = 0;
109      var.CALOT = 0;
110    var.S4 = 0;    var.S4 = 0;
111    var.ND = 0;    var.ND = 0;
112    var.INFOS = 0;    var.INFOS = 0;
# Line 128  void FEVdetector::SetDDEC(TString de){ Line 146  void FEVdetector::SetDDEC(TString de){
146  };  };
147    
148  void FEVdetector::GetWindow(){  void FEVdetector::GetWindow(){
149    otr->GetEntry(maxevent);    //
150      if ( level.file == 2 ){
151        //    printf("0qui\n");
152        L2->GetEntry(minevent);
153      } else {
154        otr->GetEntry(minevent);
155      }
156    if ( level.file < 2 ){    if ( level.file < 2 ){
157      ph = eh->GetPscuHeader();      ph = eh->GetPscuHeader();
158      lastevno = (int)ph->Counter;      firstevno = (int)ph->Counter;
159    } else {    } else {
160      lastevno = L2->GetOrbitalInfo()->pkt_num; // to be changed as soon as we will have pkt_counter in the level2 file!      if ( var.ORB ){
161          firstevno = L2->GetOrbitalInfo()->pkt_num;
162        } else {
163          firstevno = 0;
164        };
165    };    };
166    otr->GetEntry(minevent);    //
167      if ( level.file == 2 ){
168        //    printf("1qui\n");
169        L2->GetEntry(maxevent);
170      } else {
171        otr->GetEntry(maxevent);
172      }
173      //
174    if ( level.file < 2 ){    if ( level.file < 2 ){
175      ph = eh->GetPscuHeader();      ph = eh->GetPscuHeader();
176      firstevno = (int)ph->Counter;      lastevno = (int)ph->Counter;
177    } else {    } else {
178      firstevno = L2->GetOrbitalInfo()->pkt_num; // to be changed as soon as we will have pkt_counter in the level2 file!      if ( var.ORB ){
179          lastevno = L2->GetOrbitalInfo()->pkt_num;
180        } else {
181          lastevno = 0;
182        };
183    };    };
184      //
185  }  }
186    
187  void FEVdetector::ClearVariables(){  void FEVdetector::ClearVariables(){
# Line 164  void FEVdetector::ClearVariables(){ Line 204  void FEVdetector::ClearVariables(){
204  }  }
205    
206  void FEVdetector::GetEntry(Int_t i){  void FEVdetector::GetEntry(Int_t i){
207    thisentry = i;    thisentry = i;  
208    otr->GetEntry(i);    if ( level.file == 2 ){
209    //  PrintData(otr,-1LL,44);      L2->Clear();
210        //    printf("qui\n");
211        L2->GetEntry(i);
212        if ( var.showall ){
213          ShowInfo("RunInfo");
214          ShowInfo("SoftInfo");
215          ShowInfo("OrbitalInfo");
216          ShowInfo("TrigLevel2");
217          ShowInfo("ToFLevel2");
218          ShowInfo("TrkLevel2");
219          ShowInfo("AcLevel2");
220          ShowInfo("CaloLevel2");
221          ShowInfo("CaloLevel1");
222          ShowInfo("S4Level2");
223          ShowInfo("NDLevel2");
224        } else {
225          if ( var.showrun ) ShowInfo("RunInfo");
226          if ( var.showsi ) ShowInfo("SoftInfo");
227          if ( var.showorb ) ShowInfo("OrbitalInfo");
228          if ( var.showtrg ) ShowInfo("TrigLevel2");
229          if ( var.showtof ) ShowInfo("ToFLevel2");
230          if ( var.showtrk ) ShowInfo("TrkLevel2");
231          if ( var.showac ) ShowInfo("AcLevel2");
232          if ( var.showcal ) ShowInfo("CaloLevel2");
233          if ( var.showcal ) ShowInfo("CaloLevel1");
234          if ( var.shows4 ) ShowInfo("S4Level2");
235          if ( var.shownd ) ShowInfo("NDLevel2");
236        };
237      } else {
238        otr->GetEntry(i);
239        if ( var.showall ){
240          ShowInfo("Pscu");
241          ShowInfo("Trigger");
242          ShowInfo("Tof");
243          ShowInfo("Tracker");
244          ShowInfo("Anticounter");
245          ShowInfo("Calorimeter");
246          ShowInfo("S4");
247          ShowInfo("Neutron");
248        } else {
249          if ( var.showorb ) ShowInfo("Pscu");
250          if ( var.showtrg ) ShowInfo("Trigger");
251          if ( var.showtof ) ShowInfo("Tof");
252          if ( var.showtrk ) ShowInfo("Tracker");
253          if ( var.showac ) ShowInfo("Anticounter");
254          if ( var.showcal ) ShowInfo("Calorimeter");
255          if ( var.shows4 ) ShowInfo("S4");
256          if ( var.shownd ) ShowInfo("Neutron");
257        };
258      };
259  }  }
260    
261  void FEVdetector::SetEntry(Int_t i){  void FEVdetector::SetEntry(Int_t i){
# Line 287  void FEVdetector::ColorTRKMIP(Float_t mi Line 376  void FEVdetector::ColorTRKMIP(Float_t mi
376    };    };
377  }  }
378    
379  void FEVdetector::PrintLeaves(TTree *otr, Int_t i, TBranchElement *tb, Int_t lenmax){  void FEVdetector::ShowInfo(TString detector){
380    // -- Prints values of leaves.    //
381      TBranch *b1 = 0;
382    //  tb->ValidateAddress();    //  TBranch *b3 = 0;
383    printf("son qua \n");    TObjArray *branch_array = 0;
384      //  TObjArray *leaf_array = 0;                
385      //
386      if ( !strcmp(detector.Data(),"RunInfo") || !strcmp(detector.Data(),"SoftInfo") ){
387        if ( L2->GetRunTree() ) b1 = L2->GetRunTree()->FindBranch(detector.Data());
388      } else {
389        b1 = otr->FindBranch(detector.Data());
390      };
391      //
392      if ( !b1 ) return;
393      //
394      Int_t dlen = 10;
395      //
396      char o[200000];
397      char col[13];
398      char col2[13];
399      //
400      setcolor(col,RESET, GREEN, WHITE);
401      sprintf(o,"%s======> EVENT:%i\n",col, thisentry);
402      //
403      setcolor(col,RESET, RED, WHITE);
404      sprintf(o,"%s%sBranch %s\n",o,col,b1->GetName());
405      setcolor(col,RESET, BLACK, WHITE);
406      sprintf(o,"%s%s",o,col);
407      //
408      branch_array = b1->GetListOfBranches();
409      //
410      Int_t j = 0;
411      //
412      for(Int_t l=0;l<(branch_array->GetLast()+1);l++){
413        //
414        TBranchElement *tb = (TBranchElement*)branch_array->At(l);
415        Int_t type = tb->GetType();
416        Int_t atype = tb->GetStreamerType() - 20;
417        Int_t len = (tb->GetInfo()->GetLengths())[tb->GetID()];
418        Int_t length = min(len,dlen);
419        //
420        //        printf("Branches : type is %i type is %i tb getname %s  slen %i slength %i\n",atype,type,tb->GetName(),len,length);
421        switch (type){
422        case 0:
423          //      
424          // IS A VARIABLE
425          //
426          //
427          // NAME
428          //
429          setcolor(col,RESET, BLUE, WHITE);
430          setcolor(col2,RESET, BLACK, WHITE);
431          sprintf(o,"%s%s %-15s%s =",o,col,((TBranch*)branch_array->At(l))->GetName(),col2);
432          //
433          j = 0;
434          //
435          // VALUES
436          //
437          //
438          // Integer
439          //
440          if ( atype == 3 || atype == -17 ){
441            while ( j < length ){
442              if ( j < length -1 ){
443                sprintf(o,"%s %i ,",o,(Int_t)tb->GetValue(j,0));
444              } else {
445                sprintf(o,"%s %i",o,(Int_t)tb->GetValue(j,0));
446              };
447              j++;
448            };
449          };
450          //
451          // Unsigned integer
452          //
453          if ( atype == -7 || atype == 13 || atype == -9 || atype == -8 || atype == 12 ){
454            while ( j < length ){
455              if ( j < length -1 ){
456                sprintf(o,"%s %u ,",o,(UInt_t)tb->GetValue(j,0));
457              } else {
458                sprintf(o,"%s %u",o,(UInt_t)tb->GetValue(j,0));
459              };
460              j++;
461            };
462          };
463          //
464          // Float
465          //
466          if ( atype == -15 || atype == 5 ){
467            while ( j < length ){
468              if ( j < length -1 ){
469                sprintf(o,"%s %f ,",o,tb->GetValue(j,0));
470              } else {
471                sprintf(o,"%s %f",o,tb->GetValue(j,0));
472              };
473              j++;
474            };
475          };
476          //
477          // Strings
478          //
479          if ( atype == 45 ){
480            //      TObjArray *cl = (TObjArray*)(tb->GetInfo()->GetOffsets())[tb->GetID()];//tb->GetValuePointer();
481            //      TString *stringa = (TString*)(*cl)[0];  
482            //      TBranchElement *utb = (TBranchElement*)tb->GetBranchCount();
483            //      TString** stringa = (TString*)(&tb->GetValuePointer());
484            //TStreamerElement *tste = (TStreamerElement*)tb->GetInfo()->GetCurrentElement();
485    
486            //      char *ladd;
487            //      ladd = tb->GetValuePointer()
488            //      TString *stringa = (TString*)((tste->GetOffset()));
489            //      TString& mstr = *stringa;
490            //      printf(" la mia stringa %s \n",mstr.Data());
491            //      printf(" offset %i \n",(Int_t)utb->GetValue(0,0));
492            //      int pointer = (tb->GetInfo()->GetOffsets())[tb->GetID()];
493            //      TString *stringa = (TString*)(tb->GetInfo()->GetOffsets())[tb->GetID()];
494    //      TString *stringa = (TString*)tb->GetAddress();
495    //      printf(" address 0x%X \n",tb->GetAddress());
496    //      printf(" pointer 0x%X \n",tb->GetValuePointer());
497    //      printf(" object  0x%X \n",tb->GetObject());
498    //      printf("stringa %s lung %i\n",stringa.Data(),stringa.Length());
499            //      TLeaf *striglia = tb->FindLeaf(tb->GetName());
500    //      if ( striglia ){
501    //        char *pointer = (char *)striglia->GetValuePointer();
502    //        TString *pr= (TString*)pointer;
503    //        printf("ciao %s \n",pr->Data());
504    //      };
505            sprintf(o,"%s TString - not implemented yet -",o);
506          };
507          //
508          // TArray
509          //
510          if ( atype == 42 ){
511            //
512    //      TObjArray *cl = (TObjArray*)tb->GetObject();
513    //      //
514    //      TClass *myc = cl->IsA();
515    //      //
516    //      printf("qui \n");
517    //      //
518    //      // determine offset to fetch data
519    //      //
520    //      int thisoffset = 0;
521    //      TRealData *rd = myc->GetRealData(tb->GetName());
522    //      if ( rd ){
523    //        thisoffset = rd->GetThisOffset();
524    //      };
525    //      Int_t niente = 0;
526    //      TStreamerElement *tste = tb->GetInfo()->GetStreamerElement(rd->GetName(),niente);
527    //      printf(" typename %s \n",tste->GetTypeName());
528    //      //
529    //      // TArrayI
530    //      //
531    //      if ( !strcmp(tste->GetTypeName(),"TArrayI") ){
532    //        //
533    //        printf("qua \n");
534    //        char *pointer = (char*)cl->At(0);
535    //        //      char *pu = thisoffset + pointer;
536    //        int pu = (int)tste->GetTObjectOffset();
537    //        TArrayI arr = (TArrayI)*pu;
538    //        //      TArrayI arr = (TArrayI)(thisoffset);
539    //        //TArrayI *arr = (TArrayI*)pu;
540    //        //TArraI arr = (TArrayI)
541    //        Int_t jj=0;
542    //        j=0;
543    //        printf("quii \n");
544    //        Int_t arlen = min(arr.GetSize(),dlen);
545    //        //
546    //        printf("que \n");
547    //        setcolor(col,RESET, BLUE, WHITE);
548    //        setcolor(col2,RESET, BLACK, WHITE);
549    //        sprintf(o,"%s%s %s[%i]%s = ",o,col,tb->GetName(),arr.GetSize(),col2);
550    //        //
551    //        //      while ( j < tb->GetNdata() ){
552    //        //
553    //        printf("quo \n");
554    //        //        pointer = (char*)cl->UncheckedAt(j);
555    //        //        pu = pointer + thisoffset;
556    //        //        arr = (TArrayI*)(thisoffset);
557    //        //
558    //        while ( jj < arlen ){
559    //          if ( jj < arlen-1 ){
560    //            sprintf(o,"%s %i ,",o,arr.At(jj));
561    //          } else {
562    //            sprintf(o,"%s %i",o,arr.At(jj));
563    //          };
564    //          jj++;
565    //        };
566    //          //      if ( j < tb->GetNdata() -1 ) sprintf(o,"%s ,",o);
567    //          //      j++;
568    //          //    };
569    //      };
570    //      //
571    //      // TArrayF
572    //      //
573    //      if ( !strcmp(tste->GetTypeName(),"TArrayF") ){
574    //        //
575    //        char *pointer = (char*)cl->UncheckedAt(0);
576    //        char *pu = pointer + thisoffset;
577    //        TArrayF *arr = (TArrayF*)(pu);
578    //        Int_t jj=0;
579    //        Int_t arlen = min(arr->GetSize(),dlen);
580    //        //
581    //        setcolor(col,RESET, BLUE, WHITE);
582    //        setcolor(col2,RESET, BLACK, WHITE);
583    //        sprintf(o,"%s%s %s[%i]%s = ",o,col,tb->GetName(),arr->GetSize(),col2);
584    //        //
585    //        while ( j < tb->GetNdata() ){
586    //          //
587    //          pointer = (char*)cl->UncheckedAt(j);
588    //          pu = pointer + thisoffset;
589    //          arr = (TArrayF*)(pu);
590    //          //
591    //          while ( jj < arlen ){
592    //            if ( jj < arlen-1 ){
593    //              sprintf(o,"%s %f ,",o,arr->At(jj));
594    //            } else {
595    //              sprintf(o,"%s %f",o,arr->At(jj));
596    //            };
597    //            jj++;
598    //          };
599    //          if ( j < tb->GetNdata() -1 ) sprintf(o,"%s ,",o);
600    //          j++;
601    //        };
602    //      };
603    //      sprintf(o,"%s\n",o);
604            //      
605            sprintf(o,"%s TArray - not implemented yet -",o);
606            //
607          };
608          //
609          sprintf(o,"%s\n",o);
610          break;
611        case 3:
612          //
613          // IS A TCLONESARRAY
614          //
615          setcolor(col,RESET, BLUE, WHITE);
616          setcolor(col2,RESET, BLACK, WHITE);
617          sprintf(o,"%s%s %-15s%s = %d\n",o,col,tb->GetName(), col2, tb->GetNdata());
618    
619    //  if (otr->GetMakeClass()) {        //
620      if (!tb->GetAddress()) {        if ( tb->GetNdata() ){
621        printf("esco \n");          //
622        return;          TClonesArray *cl = (TClonesArray*)tb->GetObject();
623      }          //
624      if (tb->GetType() == 3 || tb->GetType() == 4) {          TClass *myc = cl->GetClass();
625        // TClonesArray or STL container top-level branch.          //
626        printf("3 o 4 %-15s = %d\n", tb->GetName(), tb->GetNdata());          TList *lme = myc->GetListOfDataMembers();
627        return;          TIter next(lme);
628      } else if (tb->GetType() == 31 || tb->GetType() == 41) {          TBranchElement *tb2 = 0;
629        printf(" 31 o 41 \n");          //
630        // TClonesArray or STL container sub-branch.          while ( (tb2 = (TBranchElement*)next()) ){
631        Int_t n = TMath::Min(10, tb->GetNdata());            //
632        Int_t atype = tb->GetStreamerType() + 20;            const char *name = tb2->GetName();
633        if (tb->GetStreamerType() == 1) {            TBranch *foglia = tb->FindBranch(name);
634          // TVirtualStreamerInfo::kOffsetL + TVirtualStreamerInfo::kChar is            if ( foglia ){
635          // printed as a string and could print weird characters.              //
636          // So we print an unsigned char instead (not perfect, but better).              TBranchElement *stb = (TBranchElement*)tb->FindBranch(name);
637          atype = 20 + 11 ;              Int_t stype = stb->GetType();
638        }              Int_t satype = stb->GetStreamerType() - 20;
639        if (atype > 54) {              Int_t slen = (stb->GetInfo()->GetLengths())[stb->GetID()];
640          // FIXME: More logic required here (like in ReadLeaves)              Int_t slength = min(slen,dlen);
641          printf(">54 %-15s = %d\n", tb->GetName(), tb->GetNdata());              //      printf("SubBranches : atype is %i type is %i tb getname %s  slen %i slength %i\n",satype,stype,stb->GetName(),slen,slength);
642          return;              switch (stype){
643        }              case 31:
644        if (tb->GetStreamerType() > 20) {                //      
645          atype -= 20;                // IS A VARIABLE
646          TObjArray *prova= otr->GetListOfLeaves();                //
647          //      TObjArray* leaf2 = (TObjArray*) prova->UncheckedAt(i);                //
648          //TLeaf* leaf = (TLeaf*)(otr->GetLeaf(tb->GetName()));                // NAME
649          //      TLeafElement* leaf = (TLeafElement*)((TLeaf*)(otr->GetListOfLeaves()->UncheckedAt(i))->GetBranch()->UncheckedAt(0));                //
650          TLeafElement* leaf = (TLeafElement*)(prova->UncheckedAt(0));                j = 0;
651          n = n * leaf->GetLenStatic();                //
652        }                // VALUES
653        if (tb->GetInfo()) {                //
654          //      n = 16;                if ( satype == 41 || satype == 44){
655          tb->GetInfo()->PrintValue(tb->GetName(), tb->GetAddress(), atype, n, lenmax);                  //
656          //tb->GetObject()->GetInfo()->PrintValue(tb->GetName(), tb->GetObject(), atype, n, lenmax);                  // skip TRef
657        }                  //
658        return;                  break;
659      } else if (tb->GetType() <= 2) {                };
660        printf(" <=2 \n");                //
661        // Branch in split mode.                // Integer
662        // FIXME: This should probably be < 60 instead.                //
663        if ((tb->GetStreamerType() > 40) && (tb->GetStreamerType() < 55)) {                if ( satype == -17 || satype == -9 ){
664          Int_t atype = tb->GetStreamerType() - 20;                  //
665          TBranchElement* counterElement = (TBranchElement*) tb->GetBranchCount();                  setcolor(col,RESET, BLUE, WHITE);
666          Int_t n = (Int_t) counterElement->GetValue(0, 0);                  setcolor(col2,RESET, BLACK, WHITE);
667          if (tb->GetInfo()) {                  sprintf(o,"%s%s %-15s%s = ",o,col,foglia->GetName(),col2);
668            tb->GetInfo()->PrintValue(tb->GetName(), tb->GetAddress(), atype, n, lenmax);                  while ( j < cl->GetEntriesFast() ){
669          }                    if ( j < cl->GetEntriesFast() -1 ){
670        } else {                      sprintf(o,"%s %i ,",o,(Int_t)stb->GetValue(j,slength));
671          //      if (tb->GetInfo()) {                    } else {
672          //        tb->GetInfo()->PrintValue(tb->GetName(), tb->GetObject(), tb->GetID(), -1, lenmax);                      sprintf(o,"%s %i",o,(Int_t)stb->GetValue(j,slength));
673          //             }                    };
674          //          }                    j++;
675          return;                  };
676        }                };
677      } else if (tb->GetType() == 3) {                //
678        printf("3 %-15s = %d\n", tb->GetName(), tb->GetNdata());                // Float
679      } else if (tb->GetType() == 31) {                //
680        printf("31 %-15s = %d\n", tb->GetName(), tb->GetNdata());                if ( satype == -15 ){
681        //     TClonesArray* clones = (TClonesArray*) tb->GetObject();                  //
682        //     if (tb->GetInfo()) {                  setcolor(col,RESET, BLUE, WHITE);
683        //       tb->GetInfo()->PrintValueClones(tb->GetName(), clones, tb->GetID(), tb->GetOffset(), lenmax);                  setcolor(col2,RESET, BLACK, WHITE);
684        //       }                  sprintf(o,"%s%s %-15s%s = ",o,col,foglia->GetName(),col2);
685      } else if (tb->GetType() == 41) {                  while ( j < cl->GetEntriesFast() ){
686        printf("41 %-15s = %d\n", tb->GetName(), tb->GetNdata());                    if ( j < cl->GetEntriesFast() -1 ){
687        //       TVirtualCollectionProxy::TPushPop helper(((TBranchElement*) this)->GetCollectionProxy(), fObject);                      sprintf(o,"%s %f ,",o,stb->GetValue(j,slength));
688        //       if (GetInfo()) {                    } else {
689        //          GetInfo()->PrintValueSTL(GetName(), ((TBranchElement*) this)->GetCollectionProxy(), fID, fOffset, lenmax);                      sprintf(o,"%s %f",o,stb->GetValue(j,slength));
690        //       }                    };
691      } else {                    j++;
692        printf("else %-15s = %d\n", tb->GetName(), tb->GetNdata());                  };
693        //       if (GetInfo()) {                };
694        //          GetInfo()->PrintValue(GetName(), fObject, fID, -1, lenmax);                //
695        //       }                // Array of float
696      }                //
697                  if ( satype == 5 ){
698                    //
699                    setcolor(col,RESET, BLUE, WHITE);
700                    setcolor(col2,RESET, BLACK, WHITE);
701                    sprintf(o,"%s%s %-15s%s = ",o,col,foglia->GetName(),col2);
702                    Bool_t bold = true;
703                    while ( j < tb->GetNdata() ){
704                      if ( bold ){
705                        setcolor(col,RESET, BLACK, WHITE);
706                        sprintf(o,"%s%s",o,col);
707                      } else {
708                        setcolor(col,BOLD, BLACK, WHITE);
709                        sprintf(o,"%s%s",o,col);                
710                      };
711                      Int_t jj = 0;          
712                      while ( jj < slength ){                  
713                        if ( jj < slength-1 ){
714                          sprintf(o,"%s %f ,",o,stb->GetValue(j,jj,true));
715                        } else {
716                          sprintf(o,"%s %f",o,stb->GetValue(j,jj,true));
717                        };
718                        jj++;
719                      };
720                      if ( j < tb->GetNdata() -1 ) sprintf(o,"%s ,",o);
721                      if ( !bold ){
722                        bold = true;
723                      } else {
724                        bold = false;
725                      };
726                      j++;
727                    };
728                    if ( bold ){
729                      setcolor(col,RESET, BLACK, WHITE);
730                      sprintf(o,"%s%s",o,col);
731                    };
732                  };
733                  //
734                  // Array of integers
735                  //
736                  if ( satype == 3 ){
737                    //
738                    setcolor(col,RESET, BLUE, WHITE);
739                    setcolor(col2,RESET, BLACK, WHITE);
740                    sprintf(o,"%s%s %-15s%s = ",o,col,foglia->GetName(),col2);
741                    while ( j < tb->GetNdata() ){
742                      Int_t jj = 0;
743                      while ( jj < slength ){
744                        if ( jj < slength-1 ){
745                          sprintf(o,"%s %i ,",o,(Int_t)stb->GetValue(j,jj,true));
746                        } else {
747                          sprintf(o,"%s %i",o,(Int_t)stb->GetValue(j,jj,true));
748                        };
749                        jj++;
750                      };
751                      if ( j < tb->GetNdata() -1 ) sprintf(o,"%s ,",o);
752                      j++;
753                    };
754                  };
755    
756      //  };                //
757    printf("esco qui\n");                // TArray
758                  //
759                  if ( satype == 42 ){
760                    //
761                    // determine offset to fetch data
762                    //
763                    int thisoffset = 0;
764                    TRealData *rd = myc->GetRealData(foglia->GetName());
765                    if ( rd ){
766                      thisoffset = rd->GetThisOffset();
767                    };
768                    Int_t niente = 0;
769                    TStreamerElement *tste = stb->GetInfo()->GetStreamerElement(rd->GetName(),niente);
770                    //
771                    // TArrayI
772                    //
773                    if ( !strcmp(tste->GetTypeName(),"TArrayI") ){
774                      //
775                      char *pointer = (char*)cl->UncheckedAt(0);
776                      char *pu = pointer + thisoffset;
777                      TArrayI *arr = (TArrayI*)(pu);
778                      Int_t jj=0;
779                      Int_t arlen = min(arr->GetSize(),dlen);
780                      //
781                      setcolor(col,RESET, BLUE, WHITE);
782                      setcolor(col2,RESET, BLACK, WHITE);
783                      sprintf(o,"%s%s %s[%i]%s = ",o,col,foglia->GetName(),arr->GetSize(),col2);
784                      //
785                      while ( j < tb->GetNdata() ){
786                        //
787                        pointer = (char*)cl->UncheckedAt(j);
788                        pu = pointer + thisoffset;
789                        arr = (TArrayI*)(pu);
790                        //
791                        while ( jj < arlen ){
792                          if ( jj < arlen-1 ){
793                            sprintf(o,"%s %i ,",o,arr->At(jj));
794                          } else {
795                            sprintf(o,"%s %i",o,arr->At(jj));
796                          };
797                          jj++;
798                        };
799                        if ( j < tb->GetNdata() -1 ) sprintf(o,"%s ,",o);
800                        j++;
801                      };
802                    };
803                    //
804                    // TArrayF
805                    //
806                    if ( !strcmp(tste->GetTypeName(),"TArrayF") ){
807                      //
808                      char *pointer = (char*)cl->UncheckedAt(0);
809                      char *pu = pointer + thisoffset;
810                      TArrayF *arr = (TArrayF*)(pu);
811                      Int_t jj=0;
812                      Int_t arlen = min(arr->GetSize(),dlen);
813                      //
814                      setcolor(col,RESET, BLUE, WHITE);
815                      setcolor(col2,RESET, BLACK, WHITE);
816                      sprintf(o,"%s%s %s[%i]%s = ",o,col,foglia->GetName(),arr->GetSize(),col2);
817                      //
818                      while ( j < tb->GetNdata() ){
819                        //
820                        pointer = (char*)cl->UncheckedAt(j);
821                        pu = pointer + thisoffset;
822                        arr = (TArrayF*)(pu);
823                        //
824                        while ( jj < arlen ){
825                          if ( jj < arlen-1 ){
826                            sprintf(o,"%s %f ,",o,arr->At(jj));
827                          } else {
828                            sprintf(o,"%s %f",o,arr->At(jj));
829                          };
830                          jj++;
831                        };
832                        if ( j < tb->GetNdata() -1 ) sprintf(o,"%s ,",o);
833                        j++;
834                      };
835                    };
836                  };
837                  sprintf(o,"%s\n",o);
838                  break;        
839                };
840              };
841            };
842          };
843          break;
844        };
845      };  
846      //  pamgui->DIALOG(0,o);
847      printf("%s\n",o);
848  };  };
849    
 void FEVdetector::PrintData(TTree *tree, Long64_t entry=-1LL,Int_t lenmax=44){  
   // -- Print values of all active leaves for entry.  
   //  
   // if entry==-1, print current entry (default)  
   // if a leaf is an array, a maximum of lenmax elements is printed.  
   //  
   if (entry != -1) {  
     tree->GetEntry(entry);  
   }  
   //  printf("======> EVENT:%lld\n", thisentry);  
   printf("======> EVENT:%i\n", thisentry);  
   TObjArray* leaves  = tree->GetListOfLeaves(); //  
   Int_t nleaves = leaves->GetEntriesFast();  
   Int_t ltype;  
   for (Int_t i = 0; i < nleaves; i++) {  
     TLeaf* leaf = (TLeaf*) leaves->UncheckedAt(i);  
     TBranch* branch = leaf->GetBranch();  
     //    if (branch->TestBit(kDoNotProcess)) {  
     //      continue;  
     //    }  
     Int_t len = leaf->GetLen();  
     if (len <= 0) {  
       continue;  
     }  
     len = TMath::Min(len, lenmax);  
     if (leaf->IsA() == TLeafElement::Class()) {  
       //      Double_t value = leaf->GetValue(lenmax);  
       //printf(" ioqui %f \n",value);  
       //      ((TBranchElement*)leaf->GetBranch())->PrintValue(i);  
       this->PrintLeaves(otr,i,((TBranchElement*)leaf->GetBranch()), lenmax);  
       //leaf->PrintValue(lenmax);  
       continue;  
     }  
     if (branch->GetListOfBranches()->GetEntriesFast() > 0) {  
       continue;  
     }  
     ltype = 10;  
     if (leaf->IsA() == TLeafF::Class()) {  
       ltype = 5;  
     }  
     if (leaf->IsA() == TLeafD::Class()) {  
       ltype = 5;  
     }  
     if (leaf->IsA() == TLeafC::Class()) {  
       len = 1;  
       ltype = 5;  
     };  
     printf(" %-15s = ", leaf->GetName());  
     for (Int_t l = 0; l < len; l++) {  
       Double_t value = leaf->GetValue(l);  
       printf(" ioqui %f \n",value);  
       //      leaf->PrintValue(l);  
       if (l == (len - 1)) {  
         printf("\n");  
         continue;  
       }  
       printf(", ");  
       if ((l % ltype) == 0) {  
         printf("\n                  ");  
       }  
     }  
   }  
 };  
850    
851  void FEVdetector::GetGeneralInfo(){  void FEVdetector::GetGeneralInfo(){
852    //    //
# Line 449  void FEVdetector::GetGeneralInfo(){ Line 857  void FEVdetector::GetGeneralInfo(){
857      headcold = headc;      headcold = headc;
858      headc = ph->Counter;      headc = ph->Counter;
859      var.headc = (int)ph->Counter;      var.headc = (int)ph->Counter;
860      OBT = ph->OrbitalTime;      OBT = (UInt_t)ph->OrbitalTime;
861      DOBT = OBT - OOBT;      DOBT = OBT - OOBT;
862      OOBT = OBT;      OOBT = OBT;
863      if ( thisentry == minevent || DOBT < 0 || (headc-headcold-1)!=0 ) DOBT = 0;      if ( thisentry == minevent || DOBT < 0 || (headc-headcold-1)!=0 ) DOBT = 0;
# Line 485  void FEVdetector::GetGeneralInfo(){ Line 893  void FEVdetector::GetGeneralInfo(){
893      trcs = (TString)trc.str().c_str();      trcs = (TString)trc.str().c_str();
894    } else {    } else {
895      headcold = headc;      headcold = headc;
896      headc = L2->GetOrbitalInfo()->pkt_num; // to be changed as soon as we will have obt in the level2 file!      if ( var.RUN ){
897      OBT = L2->GetOrbitalInfo()->OBT; // to be changed as soon as we will have obt in the level2 file!        var.idrun = L2->GetRunInfo()->ID;
898      DOBT = OBT - OOBT;        var.idroot = L2->GetRunInfo()->ID_ROOT_L0;
899      OOBT = OBT;        var.EVF = L2->GetRunInfo()->EV_FROM;
900      if ( thisentry == minevent || DOBT < 0 || (headc-headcold-1)!=0 ) DOBT = 0;      };
901      var.etime = OBT;      if ( var.ORB ){
902          headc = L2->GetOrbitalInfo()->pkt_num;
903          OBT = L2->GetOrbitalInfo()->OBT;
904          DOBT = OBT - OOBT;
905          OOBT = OBT;
906          if ( thisentry == minevent || DOBT < 0 || (headc-headcold-1)!=0 ) DOBT = 0;
907          var.etime = OBT;
908        } else {
909          var.etime = 0;
910        };
911      //            //      
912      // who gave the trigger?      // who gave the trigger?
913      //      //
914      calotrig = 0;      Int_t trigconf = 0;
915      if ( L2->GetTrigLevel2()->patterntrig[0] ) calotrig = 1;      if ( var.TRG ){
916      toftrig = 0;        calotrig = 0;
917      if ( L2->GetTrigLevel2()->patterntrig[2] || L2->GetTrigLevel2()->patterntrig[3] || L2->GetTrigLevel2()->patterntrig[4] || L2->GetTrigLevel2()->patterntrig[5] ) toftrig = 1;        if ( L2->GetTrigLevel2()->patterntrig[0] ) calotrig = 1;
918      s4pulser = 0;        toftrig = 0;
919      if ( L2->GetTrigLevel2()->patterntrig[1] & (1<<0) ) s4pulser = 1;        if ( L2->GetTrigLevel2()->patterntrig[2] || L2->GetTrigLevel2()->patterntrig[3] || L2->GetTrigLevel2()->patterntrig[4] || L2->GetTrigLevel2()->patterntrig[5] ) toftrig = 1;
920      //        s4pulser = 0;
921      // TOF and calorimeter when giving a trigger will always set this flag since the time window of the signal is greater than 100 ns.        if ( L2->GetTrigLevel2()->patterntrig[1] & (1<<0) ) s4pulser = 1;
922      // S4 sometimes could not set the flag even if the trigger is given. This is a workaround to fix this "bug":        //
923      //        // TOF and calorimeter when giving a trigger will always set this flag since the time window of the signal is greater than 100 ns.
924      if ( !calotrig && !toftrig ) s4pulser = 1;        // S4 sometimes could not set the flag even if the trigger is given. This is a workaround to fix this "bug":
925      //        //
926      Int_t trigconf = L2->GetTrigLevel2()->trigconf;        if ( !calotrig && !toftrig ) s4pulser = 1;
927          //
928          trigconf = L2->GetTrigLevel2()->trigconf;
929        } else {
930          trigconf = 0;
931        }
932      stringstream trc;      stringstream trc;
933      trc.str("");      trc.str("");
934      if ( trigconf & (1<<0) ) trc << "TOF1";      if ( trigconf & (1<<0) ) trc << "TOF1";
# Line 615  int FEVdetector::SelectEvent(){ Line 1037  int FEVdetector::SelectEvent(){
1037        //        //
1038        if ( level.file == -1 ) isOK = gApplication->ProcessLine("filter((TTree *)otr,-1,(Variables &)var);");        if ( level.file == -1 ) isOK = gApplication->ProcessLine("filter((TTree *)otr,-1,(Variables &)var);");
1039        //        //
1040        if ( level.file ==  2 ) isOK = gApplication->ProcessLine("filter((PamLevel2 *)L2,2);");        //      if ( level.file ==  2 ) isOK = gApplication->ProcessLine("filter((PamLevel2 *)L2,2);");
1041          if ( level.file ==  2 ) isOK = gApplication->ProcessLine("filter();");
1042        //        //
1043        // progress bar in text window        // progress bar in text window
1044        //        //
# Line 628  int FEVdetector::SelectEvent(){ Line 1051  int FEVdetector::SelectEvent(){
1051    //    //
1052  }  }
1053    
1054  Int_t FEVdetector::Load(TTree &mainotr, TFile &mainfile){  TChain* FEVdetector::Load(TString file){
1055    file = &mainfile;    //
1056    otr = &mainotr;    //  file = &mainfile;
   L2 = new PamLevel2();  
1057    //    //
1058    if ( level.file == 2 ){    if ( level.file == 2 ){
1059      //    otr = L2->LoadPamTrees(file);      //
1060      //    printf(" %s \n",ddec.Data());      printf(" %s \n",ddec.Data());
1061      otr = L2->GetPamTree(file,ddec.Data());      if ( !L2 ){
1062          L2 = new PamLevel2("",file.Data(),ddec.Data());
1063          otr = L2->GetPamTree();
1064          printf(" l2 constructor\n");
1065          //      printf(" abst %u obt %u qtot %f \n",L2->GetOrbitalInfo()->absTime,L2->GetOrbitalInfo()->OBT,L2->GetCaloLevel2()->qtot);    
1066        } else {
1067          //
1068          printf(" l2 already exist \n");
1069          otr = L2->GetPamTree(gSystem->DirName(file.Data()),file.Data(),ddec.Data());
1070          L2->GetRunTree(gSystem->DirName(file.Data()),file.Data());
1071          //
1072        };
1073        //
1074      //      //
1075      if ( !otr ) return(0);      if ( !otr ) return(0);
     // ********************  
     // load magnetic field  
     // ********************  
     const char *pam_calib = pathtocalibration();  
1076      //      //
1077      stringstream magfie;      //    otr->CanDeleteRefs(true);
1078      magfie.str("");      //    if ( runtree ) runtree->CanDeleteRefs(true);
     //    magfie << "/localdisk/mocchiut/test/calib/trk-param/field_param-0/";  
     magfie << pam_calib;  
     magfie << "/trk-param/field_param-0/";  
1079      //      //
     L2->GetTrkLevel2()->LoadField(magfie.str().c_str());  
1080    } else {    } else {
1081      //      //
1082      // load calorimeter ADC2MIP conversion file      // load calorimeter ADC2MIP conversion file
# Line 691  Int_t FEVdetector::Load(TTree &mainotr, Line 1117  Int_t FEVdetector::Load(TTree &mainotr,
1117    };    };
1118    //    //
1119    //    //
1120    trigger = new pamela::trigger::TriggerEvent();    // Load level0 file if the case
   eh = new pamela::EventHeader();  
   ph = new pamela::PscuHeader();  
   //  oinfoL2 = new OrbitalInfo();  
   runinfo = new ItoRunInfo(file);  
   //  
   de = new pamela::calorimeter::CalorimeterEvent();  
   trk = new pamela::tracker::TrackerEvent();  
   ne = new pamela::neutron::NeutronEvent();  
   ace = new pamela::anticounter::AnticounterEvent();  
   s4 = new pamela::S4::S4Event();  
   tof = new pamela::tof::TofEvent();  
1121    //    //
1122    if ( level.file == 0 || level.file == -1 ){    if ( level.file == 0 || level.file == -1 ){
1123        //
1124        trigger = new pamela::trigger::TriggerEvent();
1125        eh = new pamela::EventHeader();
1126        ph = new pamela::PscuHeader();
1127        de = new pamela::calorimeter::CalorimeterEvent();
1128        trk = new pamela::tracker::TrackerEvent();
1129        ne = new pamela::neutron::NeutronEvent();
1130        ace = new pamela::anticounter::AnticounterEvent();
1131        s4 = new pamela::S4::S4Event();
1132        tof = new pamela::tof::TofEvent();
1133        //
1134        otr = new TChain("Physics");
1135        otr->Add(file.Data(),-1);
1136      otr->SetBranchAddress("Trigger", &trigger);      otr->SetBranchAddress("Trigger", &trigger);
1137      otr->SetBranchAddress("Header", &eh);      otr->SetBranchAddress("Header", &eh);
1138    };    };
   if ( level.file == 2 && var.RUN){  
     //    otr->AddFriend("OrbitalInfo", file);        
     //    otr->SetBranchAddress("OrbitalInfo", &oinfoL2);          
     runinfo->Read(0ULL);  
   };  
1139    //    //
1140    if ( var.TRK ) {    if ( var.TRK ) {
1141      if ( level.file == 0 || level.file == -1 ){      if ( level.file == 0 || level.file == -1 ){
# Line 785  Int_t FEVdetector::Load(TTree &mainotr, Line 1208  Int_t FEVdetector::Load(TTree &mainotr,
1208      };      };
1209    };    };
1210    //    //
1211    return(1);    if ( !otr ){
1212        return(0);
1213      };
1214      //
1215      return otr;
1216    //        //    
1217  }  }
1218    
# Line 861  void FEVdetector::DisplayEvent(){ Line 1288  void FEVdetector::DisplayEvent(){
1288      text->DrawLatex(0.33,txthi,testo.str().c_str());      text->DrawLatex(0.33,txthi,testo.str().c_str());
1289      txthi -= 0.03;      txthi -= 0.03;
1290      testo2.str("");      testo2.str("");
1291      testo2 << "On Board Time: " << (int)OBT;      testo2 << "On Board Time: " << (unsigned int)OBT;
1292      if ( DOBT > 0 ) {                    if ( DOBT > 0 ) {              
1293        testo2 << " (delta: " << (int)DOBT;        testo2 << " (delta: " << (unsigned int)DOBT;
1294        testo2 << ")";        testo2 << ")";
1295      };      };
1296      testo2 << " [ms]";      testo2 << " [ms]";
# Line 1481  void FEVdetector::ShowPalette(){ Line 1908  void FEVdetector::ShowPalette(){
1908  void FEVdetector::ShowTOF(){  void FEVdetector::ShowTOF(){
1909    //    //
1910    //    //
   //  
1911    if ( !var.TOF ) return;    if ( !var.TOF ) return;
1912    //    //
1913    Int_t tt = 0;    Int_t tt = 0;
# Line 2282  void FEVdetector::ShowTOF(){ Line 2708  void FEVdetector::ShowTOF(){
2708    //    //
2709    Bool_t repeat = true;    Bool_t repeat = true;
2710    Int_t numtr = 1;    Int_t numtr = 1;
2711    //  Int_t numtr = 0;
2712    Int_t repuntil = 0;    Int_t repuntil = 0;
2713    //      //  
2714    //    //
# Line 2289  void FEVdetector::ShowTOF(){ Line 2716  void FEVdetector::ShowTOF(){
2716    //    //
2717    if ( level.file == 2 ) repuntil = L2->GetToFLevel2()->ntrk();        if ( level.file == 2 ) repuntil = L2->GetToFLevel2()->ntrk();    
2718    //  printf("repuntil = %i \n",repuntil);    //  printf("repuntil = %i \n",repuntil);
2719      //if ( level.file == 2 ) repuntil = L2->GetTrkLevel2()->GetNTracks();    
2720    //repuntil = L2->GetNTracks();        //repuntil = L2->GetNTracks();    
2721    //    //
2722    while ( repeat ){    while ( repeat ){
# Line 2298  void FEVdetector::ShowTOF(){ Line 2726  void FEVdetector::ShowTOF(){
2726        //        //
2727        //        //
2728        ToFTrkVar *ptt = 0;        ToFTrkVar *ptt = 0;
2729    //      PamTrack *ptrack = 0;
2730          Float_t adc[4][12];
2731          Float_t tdc[4][12];
2732          memset(adc,0,4*12*sizeof(Float_t));
2733          memset(tdc,0,4*12*sizeof(Float_t));
2734        //              //      
2735        //        //
2736          //      if ( repuntil == 0 || var.tofraw ){
2737        if ( repuntil == 1 || var.tofraw ){        if ( repuntil == 1 || var.tofraw ){
2738          numtr = 0;          numtr = 0;
2739          ptt = L2->GetToFLevel2()->GetToFTrkVar(0);          ptt = L2->GetToFLevel2()->GetToFTrkVar(0);
# Line 2309  void FEVdetector::ShowTOF(){ Line 2743  void FEVdetector::ShowTOF(){
2743          //          //
2744          if ( numtr >= repuntil-1 ) repeat = false;          if ( numtr >= repuntil-1 ) repeat = false;
2745          //          //
2746          ptt = L2->GetToFLevel2()->GetToFTrkVar(numtr);          //      printf(" numtr is %i \n",numtr);
2747            ptt = L2->GetToFLevel2()->GetToFTrkVar(numtr);  
2748            //ptrack = L2->GetTrack(numtr);
2749            //ptt = ptrack->GetToFTrack();
2750        };        };
2751        //        //
2752        xp11[0] = 0.;        xp11[0] = 0.;
# Line 2323  void FEVdetector::ShowTOF(){ Line 2760  void FEVdetector::ShowTOF(){
2760        //        //
2761        ii = 2;        ii = 2;
2762        //        //
2763        Float_t adc[4][12];        Int_t myseq = ptt->trkseqno + 1;
2764        Float_t tdc[4][12];        L2->GetToFLevel2()->GetMatrix(myseq,adc,tdc);
2765        L2->GetToFLevel2()->GetMatrix(numtr,adc,tdc);        //
2766          //      printf(" qua \n");
2767        //        //
2768        for ( Int_t i = 0; i<8; i++ ) {          for ( Int_t i = 0; i<8; i++ ) {  
2769          if ( adc[ch11a[i]][hb11a[i]] < 1000. ){          if ( adc[ch11a[i]][hb11a[i]] < 1000. ){
# Line 3846  void FEVdetector::ShowAC(){ Line 4283  void FEVdetector::ShowAC(){
4283      pcasp4b->Draw("f");      pcasp4b->Draw("f");
4284      pcasp4b->Draw();      pcasp4b->Draw();
4285    };    };
4286    Float_t alfa = 1.2020334;    //  Float_t alfax = 1.2020334;
4287      Float_t alfax = 1.22157778;
4288      Float_t alfay = 1.27393111;
4289    Float_t lcrd = 0.1815/2.;    Float_t lcrd = 0.1815/2.;
4290    Float_t wcrd = 0.008;    Float_t wcrd = 0.008;
4291    if ( true ){    if ( true ){
# Line 4057  void FEVdetector::ShowAC(){ Line 4496  void FEVdetector::ShowAC(){
4496      //      //
4497      //    Float_t cardcx = 0.143168*var.sfx;      //    Float_t cardcx = 0.143168*var.sfx;
4498      //Float_t cardcy = 0.1475*var.sfy;      //Float_t cardcy = 0.1475*var.sfy;
4499      Float_t cardcx = 0.153168*var.sfx;      //
4500      Float_t cardcy = 0.1575*var.sfy;      //    Float_t cardcx = 0.153168*var.sfx;
4501      Float_t acrdx[4] = {-lcrd*cos(alfa), lcrd*cos(alfa), -lcrd*cos(alfa)+wcrd*sin(alfa), -lcrd*cos(alfa)};      //
4502      Float_t acrdy[4] = {-lcrd*sin(alfa), lcrd*sin(alfa), -lcrd*sin(alfa)-wcrd*cos(alfa), -lcrd*sin(alfa)};      Float_t cardcx = (0.19123*(1.-lcrd*cos(alfax)))*var.sfx;
4503      Float_t bcrdx[4] = { lcrd*cos(alfa), lcrd*cos(alfa)+wcrd*sin(alfa), -lcrd*cos(alfa)+wcrd*sin(alfa), lcrd*cos(alfa)};      //    Float_t cardcy = 0.1575*var.sfy;
4504      Float_t bcrdy[4] = { lcrd*sin(alfa), lcrd*sin(alfa)-wcrd*cos(alfa), -lcrd*sin(alfa)-wcrd*cos(alfa), lcrd*sin(alfa)};      Float_t cardcy = (0.179212*(1.-lcrd*sin(alfax)))*var.sfy;
4505        Float_t acrdx[4] = {-lcrd*cos(alfax), lcrd*cos(alfax), -lcrd*cos(alfax)+wcrd*sin(alfax), -lcrd*cos(alfax)};
4506        Float_t acrdy[4] = {-lcrd*sin(alfax), lcrd*sin(alfax), -lcrd*sin(alfax)-wcrd*cos(alfax), -lcrd*sin(alfax)};
4507        Float_t bcrdx[4] = { lcrd*cos(alfax), lcrd*cos(alfax)+wcrd*sin(alfax), -lcrd*cos(alfax)+wcrd*sin(alfax), lcrd*cos(alfax)};
4508        Float_t bcrdy[4] = { lcrd*sin(alfax), lcrd*sin(alfax)-wcrd*cos(alfax), -lcrd*sin(alfax)-wcrd*cos(alfax), lcrd*sin(alfax)};
4509    
4510      //      //
4511      // CARD3  X/  Y      // CARD3  X/  Y
# Line 4122  void FEVdetector::ShowAC(){ Line 4565  void FEVdetector::ShowAC(){
4565    };    };
4566    
4567    if ( true ){    if ( true ){
4568      Float_t acrdx[4] = {-lcrd*cos(alfa), lcrd*cos(alfa), -lcrd*cos(alfa)+wcrd*sin(alfa), -lcrd*cos(alfa)};      Float_t acrdx[4] = {-lcrd*cos(alfay), lcrd*cos(alfay), -lcrd*cos(alfay)+wcrd*sin(alfay), -lcrd*cos(alfay)};
4569      Float_t acrdy[4] = {-lcrd*sin(alfa), lcrd*sin(alfa), -lcrd*sin(alfa)-wcrd*cos(alfa), -lcrd*sin(alfa)};      Float_t acrdy[4] = {-lcrd*sin(alfay), lcrd*sin(alfay), -lcrd*sin(alfay)-wcrd*cos(alfay), -lcrd*sin(alfay)};
4570      Float_t bcrdx[4] = { lcrd*cos(alfa), lcrd*cos(alfa)+wcrd*sin(alfa), -lcrd*cos(alfa)+wcrd*sin(alfa), lcrd*cos(alfa)};      Float_t bcrdx[4] = { lcrd*cos(alfay), lcrd*cos(alfay)+wcrd*sin(alfay), -lcrd*cos(alfay)+wcrd*sin(alfay), lcrd*cos(alfay)};
4571      Float_t bcrdy[4] = { lcrd*sin(alfa), lcrd*sin(alfa)-wcrd*cos(alfa), -lcrd*sin(alfa)-wcrd*cos(alfa), lcrd*sin(alfa)};      Float_t bcrdy[4] = { lcrd*sin(alfay), lcrd*sin(alfay)-wcrd*cos(alfay), -lcrd*sin(alfay)-wcrd*cos(alfay), lcrd*sin(alfay)};
4572      //      //
4573      // CARD - Y-view      // CARD - Y-view
4574      //      //
4575      Float_t cardcx = 0.12*var.sfx;      //    Float_t cardcx = 0.12*var.sfx;
4576      Float_t cardcy = 0.1475*var.sfy;      Float_t cardcx = (0.16014*(1.-lcrd*cos(alfay)))*var.sfx;
4577        //    Float_t cardcy = 0.178818*var.sfy;
4578        Float_t cardcy = (0.178818*(1.-lcrd*sin(alfay)))*var.sfy;
4579        //    Float_t cardcy = 0.1475*var.sfy;
4580      //      //
4581      // CARD4  X  Y/      // CARD4  X  Y/
4582      //      //
# Line 4794  void FEVdetector::ShowTRK(Bool_t upd){ Line 5240  void FEVdetector::ShowTRK(Bool_t upd){
5240        // first of all plot crosses relatives to tracks        // first of all plot crosses relatives to tracks
5241        //        //
5242        if ( L2->GetTrkLevel2()->GetNTracks() > 0 ){        if ( L2->GetTrkLevel2()->GetNTracks() > 0 ){
5243    //      for (Int_t nt = 0; nt < L2->GetTrkLevel2()->GetNTracks(); nt++){
5244    //        TrkTrack *track = L2->GetTrkLevel2()->GetTrack(nt);  
5245          for (Int_t nt = 0; nt < L2->GetTrkLevel2()->GetNTracks(); nt++){          for (Int_t nt = 0; nt < L2->GetTrkLevel2()->GetNTracks(); nt++){
5246            TrkTrack *track = L2->GetTrkLevel2()->GetTrack(nt);              PamTrack *ptrack= L2->GetTrack(nt);
5247              TrkTrack *track = ptrack->GetTrkTrack();  
5248              //
5249            for (Int_t plane = 0; plane<6; plane++){            for (Int_t plane = 0; plane<6; plane++){
5250              //              //
5251              x = track->xm[plane];              x = track->xm[plane];
# Line 5109  void FEVdetector::ShowTRK(Bool_t upd){ Line 5559  void FEVdetector::ShowTRK(Bool_t upd){
5559    
5560  void FEVdetector::ShowTrack(){  void FEVdetector::ShowTrack(){
5561    //    //
5562      if ( level.file != 2 ) return;
5563      //
5564    //    //
5565    //    //
5566    if ( var.CALO && false ){    if ( var.CALO && var.CALOT ){
5567      if ( L2->GetCaloLevel2()->npcfit[0] > 0 && L2->GetCaloLevel2()->npcfit[1] > 0 ){      if ( L2->GetCaloLevel2()->npcfit[0] > 0 && L2->GetCaloLevel2()->npcfit[1] > 0 ){
5568        Float_t calx[22];        Float_t calx[22];
5569        Float_t caly[22];        Float_t caly[22];
# Line 5206  void FEVdetector::ShowTrack(){ Line 5658  void FEVdetector::ShowTrack(){
5658      };      };
5659    };    };
5660    //    //
5661    if ( !var.TRK || level.file != 2 ) return;    if ( !var.TRK ) return;
5662    //    //
5663    if ( L2->GetTrkLevel2()->GetNTracks() > 0 ){    if ( L2->GetTrkLevel2()->GetNTracks() > 0 ){
5664      for (Int_t nt = 0; nt < L2->GetTrkLevel2()->GetNTracks(); nt++){      for (Int_t nt = 0; nt < L2->GetTrkLevel2()->GetNTracks(); nt++){
5665    
5666        //      TrkTrack *track = L2->GetTrkLevel2()->GetTrack(nt);        //      TrkTrack *track = L2->GetTrkLevel2()->GetTrack(nt);
5667          //      printf("qui \n");
5668        PamTrack *ptrack = L2->GetTrack(nt);        PamTrack *ptrack = L2->GetTrack(nt);
5669        TrkTrack *track = ptrack->GetTrkTrack();        TrkTrack *track = ptrack->GetTrkTrack();
5670          //      printf("qua \n");
5671        Int_t npoint = 100;        Int_t npoint = 100;
5672        Float_t zin[100];        Float_t zin[100];
5673        Double_t xout[100];        Double_t xout[100];
# Line 5421  void FEVdetector::ShowCalo(Bool_t upd){ Line 5875  void FEVdetector::ShowCalo(Bool_t upd){
5875          Int_t se = 5;          Int_t se = 5;
5876          if ( !l && m%2 == 0 ) se = 3;          if ( !l && m%2 == 0 ) se = 3;
5877          if ( !l && m%2 != 0 ) se = 2;          if ( !l && m%2 != 0 ) se = 2;
5878          if (  l && m%2 == 0 ) se = 1;          if (  l && m%2 != 0 ) se = 1;
5879          if (  l && m%2 != 0 ) se = 0;          if (  l && m%2 == 0 ) se = 0;
5880          //          //
5881          // determine what kind of event we are going to analyze          // determine what kind of event we are going to analyze
5882          //          //
# Line 5537  void FEVdetector::ShowCalo(Bool_t upd){ Line 5991  void FEVdetector::ShowCalo(Bool_t upd){
5991      //      //
5992      // Define variables      // Define variables
5993      //      //
5994      Int_t etime = var.etime;      UInt_t etime = var.etime;
5995      Float_t estrip[2][22][96], ener, basel,sdexy[2][22][96],sdexyc[2][22][96];      Float_t estrip[2][22][96], ener, basel,sdexy[2][22][96],sdexyc[2][22][96];
5996      Int_t badstrip = 0;      Int_t badstrip = 0;
5997      qtot = 0.;      qtot = 0.;
# Line 5609  void FEVdetector::ShowCalo(Bool_t upd){ Line 6063  void FEVdetector::ShowCalo(Bool_t upd){
6063        if ( calib.ttime[s][b[s]+1] && calib.time[s][b[s]] ){        if ( calib.ttime[s][b[s]+1] && calib.time[s][b[s]] ){
6064          while ( etime > calib.time[s][b[s]] && calib.time[s][b[s]] != 0 ){                                        while ( etime > calib.time[s][b[s]] && calib.time[s][b[s]] != 0 ){                              
6065            printf(" CALORIMETER: \n" );            printf(" CALORIMETER: \n" );
6066            printf(" - Section %i, event at time %i while old calibration time limit at %i. Use new calibration at time %i -\n",s,etime,calib.time[s][b[s]],calib.ttime[s][b[s]+1]);            printf(" - Section %i, event at time %u while old calibration time limit at %u. Use new calibration at time %u -\n",s,(UInt_t)etime,(UInt_t)calib.time[s][b[s]],(UInt_t)calib.ttime[s][b[s]+1]);
6067            printf(" END CALORIMETER. \n\n" );            printf(" END CALORIMETER. \n\n" );
6068            b[s]++;            b[s]++;
6069            CaloPede(s);            CaloPede(s);
# Line 5629  void FEVdetector::ShowCalo(Bool_t upd){ Line 6083  void FEVdetector::ShowCalo(Bool_t upd){
6083          Int_t se = 5;          Int_t se = 5;
6084          if (l == 0 && m%2 == 0) se = 3;          if (l == 0 && m%2 == 0) se = 3;
6085          if (l == 0 && m%2 != 0) se = 2;          if (l == 0 && m%2 != 0) se = 2;
6086          if (l == 1 && m%2 == 0) se = 1;          if (l == 1 && m%2 != 0) se = 1;
6087          if (l == 1 && m%2 != 0) se = 0;                  if (l == 1 && m%2 == 0) se = 0;        
6088          //          //
6089          // determine what kind of event we are going to analyze          // determine what kind of event we are going to analyze
6090          //          //
# Line 5914  void FEVdetector::Calo1stcalib(){ Line 6368  void FEVdetector::Calo1stcalib(){
6368      for (Int_t d = 0; d<48; d++){      for (Int_t d = 0; d<48; d++){
6369        if ( calib.ttime[s][d] != 0 ) calibex++;        if ( calib.ttime[s][d] != 0 ) calibex++;
6370        if ( calib.time[s][0] != 0 ){        if ( calib.time[s][0] != 0 ){
6371          if ( d == 0 )  printf(" Section %i from time 0 to time %i use calibration at time %i \n",s,calib.time[s][d],calib.ttime[s][d]);          if ( d == 0 )  printf(" Section %i from time 0 to time %u use calibration at time %u \n",s,calib.time[s][d],calib.ttime[s][d]);
6372          if ( calib.time[s][d+1] != 0 ) {          if ( calib.time[s][d+1] != 0 ) {
6373            printf(" Section %i from time %i to time %i use calibration at time %i \n",s,calib.time[s][d],calib.time[s][d+1],calib.ttime[s][d+1]);            printf(" Section %i from time %u to time %u use calibration at time %u \n",s,calib.time[s][d],calib.time[s][d+1],calib.ttime[s][d+1]);
6374          } else {          } else {
6375            if ( !stop ){            if ( !stop ){
6376              printf(" Section %i from time %i use calibration at time %i \n",s,calib.time[s][d],calib.ttime[s][d+1]);                          printf(" Section %i from time %u use calibration at time %u \n",s,calib.time[s][d],calib.ttime[s][d+1]);            
6377              stop = 1;              stop = 1;
6378            };            };
6379          };          };
6380        } else {        } else {
6381          if ( calib.ttime[s][d] != 0 ) printf(" Section %i from time 0 use calibration at time %i \n",s,calib.ttime[s][d]);          if ( calib.ttime[s][d] != 0 ) printf(" Section %i from time 0 use calibration at time %u \n",s,calib.ttime[s][d]);
6382        };        };
6383      };      };
6384      printf("\n");            printf("\n");      
# Line 5989  int FEVdetector::OLDCaloFindCalibs(){ Line 6443  int FEVdetector::OLDCaloFindCalibs(){
6443        calib.ttime[s][inter] = 0;        calib.ttime[s][inter] = 0;
6444        if ( ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) {        if ( ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) {
6445          //calib.ttime[s][inter] = cph->GetOrbitalTime();          //calib.ttime[s][inter] = cph->GetOrbitalTime();
6446          calib.ttime[s][inter] = cph->OrbitalTime;          calib.ttime[s][inter] = (UInt_t)cph->OrbitalTime;
6447          inter++;          inter++;
6448        } else {        } else {
6449          if ( ce->cstwerr[s] != 0 && ce->cperror[s] != 0 ) {          if ( ce->cstwerr[s] != 0 && ce->cperror[s] != 0 ) {
# Line 6043  int FEVdetector::CaloPede(Int_t s){ Line 6497  int FEVdetector::CaloPede(Int_t s){
6497      tr->GetEntry(ci);      tr->GetEntry(ci);
6498      cph = ceh->GetPscuHeader();                      cph = ceh->GetPscuHeader();                
6499      //if ( atime == cph->GetOrbitalTime()){      //if ( atime == cph->GetOrbitalTime()){
6500      if ( atime == cph->OrbitalTime){      if ( atime == (UInt_t)cph->OrbitalTime){
6501        //      calib.iev = ce->iev;        //      calib.iev = ce->iev;
6502        if (ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) {        if (ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) {
6503          for ( Int_t d=0 ; d<11 ;d++  ){          for ( Int_t d=0 ; d<11 ;d++  ){

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.21

  ViewVC Help
Powered by ViewVC 1.1.23