/[PAMELA software]/DarthVader/TrackerLevel2/src/TrkLevel1.cpp
ViewVC logotype

Diff of /DarthVader/TrackerLevel2/src/TrkLevel1.cpp

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

revision 1.13 by pam-fi, Mon Feb 5 16:01:51 2007 UTC revision 1.14 by pam-fi, Fri Feb 16 14:56:01 2007 UTC
# Line 313  void TrkCluster::Dump(){ Line 313  void TrkCluster::Dump(){
313  /**  /**
314   * Method to fill a level1 struct with only one cluster (done to use F77 p.f.a. routines on a cluster basis).   * Method to fill a level1 struct with only one cluster (done to use F77 p.f.a. routines on a cluster basis).
315   */   */
316  cTrkLevel1* TrkCluster::GetLevel1Struct(){  void TrkCluster::GetLevel1Struct(cTrkLevel1* l1){
317                                    
318  //    cTrkLevel1* l1 = new cTrkLevel1;  //    cTrkLevel1* l1 = new cTrkLevel1;
319    
320      cTrkLevel1* l1 = &level1event_ ;  //    cTrkLevel1* l1 = &level1event_ ;
321                    
322      l1->nclstr1 = 1;      l1->nclstr1 = 1;
323      l1->view[0] = view;      l1->view[0] = view;
# Line 335  cTrkLevel1* TrkCluster::GetLevel1Struct( Line 335  cTrkLevel1* TrkCluster::GetLevel1Struct(
335          l1->clbad[i] = clbad[i];          l1->clbad[i] = clbad[i];
336      };      };
337            
338      return l1;  //    return l1;
339  };  };
340  //--------------------------------------  //--------------------------------------
341  //  //
# Line 397  Float_t TrkCluster::GetETA(Int_t neta, f Line 397  Float_t TrkCluster::GetETA(Int_t neta, f
397  //    cout << "GetETA(neta,angle) "<< neta << " "<< angle;  //    cout << "GetETA(neta,angle) "<< neta << " "<< angle;
398  //      LoadPfaParam();  //      LoadPfaParam();
399    
400        TrkParams::Load(4);
401        if( !TrkParams::IsLoaded(4) ){
402            cout << "int Trajectory::DoTrack2(float* al) --- ERROR --- p.f.a. parameters  not loaded"<<endl;
403            return 0;
404        }
405    
406      float ax = angle;      float ax = angle;
407      int ic = 1;      int ic = 1;
408      GetLevel1Struct();      GetLevel1Struct();
# Line 522  void TrkLevel1::SetFromLevel1Struct(cTrk Line 528  void TrkLevel1::SetFromLevel1Struct(cTrk
528   * Fills a struct cTrkLevel1 with values from a TrkLevel1 object (to put data into a F77 common).   * Fills a struct cTrkLevel1 with values from a TrkLevel1 object (to put data into a F77 common).
529   */   */
530    
531  cTrkLevel1* TrkLevel1::GetLevel1Struct() {  void TrkLevel1::GetLevel1Struct(cTrkLevel1* l1) {
532            
533      cTrkLevel1 *l1=0;  //    cTrkLevel1* l1 = &level1event_ ;
534      //      
535      for(Int_t i=0; i<12 ; i++){      for(Int_t i=0; i<12 ; i++){
536          l1->good[i] = good[i];          l1->good[i] = good[i];
537          for(Int_t j=0; j<24 ; j++){          for(Int_t j=0; j<24 ; j++){
538              l1->cnev[j][i]    = cn[j][i];              l1->cnev[j][i]    = cn[j][i]  ;
539  //          l1->cnrmsev[j][i] = cnrms[j][i];              l1->cnnev[j][i]   = cnn[j][i] ;
540              l1->cnnev[j][i]   = cnn[j][i];              l1->cnrmsev[j][i] = 0. ;
541          };          };
542            l1->fshower[i] = 0;
543      };      };
544        
545  //  *** CLUSTERS ***      l1->nclstr1=0;
546        l1->totCLlength=0;
547        Int_t index=0;
548      if(Cluster){      if(Cluster){
549          l1->nclstr1 =  Cluster->GetEntries();          Int_t i=0;
550          for(Int_t i=0;i<l1->nclstr1;i++){          for(Int_t ii=0;ii<Cluster->GetEntries();ii++){
551                        TrkCluster *clu = GetCluster(ii);
552              l1->view[i]     = ((TrkCluster *)Cluster->At(i))->view;              // ----------------------------------------
553              l1->maxs[i]     = ((TrkCluster *)Cluster->At(i))->maxs;              // attenzione!!
554              // COMPLETARE //              // se il cluster non e` salvato (view = 0)
555              // COMPLETARE //              // DEVE essere escluso dal common F77
556              // COMPLETARE //              // ----------------------------------------
557              // COMPLETARE //              if(clu->view != 0 ){
558              // COMPLETARE //                  l1->view[i]     = clu->view;
559              // COMPLETARE //                  l1->ladder[i]   = clu->GetLadder();
560                            l1->maxs[i]     = clu->maxs;
561                    l1->mult[i]     = clu->GetMultiplicity();
562                    l1->dedx[i]     = clu->GetSignal();
563                    l1->indstart[i] = index+1;
564                    l1->indmax[i]   = l1->indstart[i] + clu->indmax;
565                    l1->totCLlength += clu->CLlength;
566                    for(Int_t iw=0; iw < clu->CLlength; iw++){
567                        l1->clsignal[index] = clu->clsignal[iw];
568                        l1->clsigma[index]  = clu->clsigma[iw];
569                        l1->cladc[index]    = clu->cladc[iw];
570                        l1->clbad[index]    = clu->clbad[iw];
571                        index++;
572                    }
573                    i++;
574                }
575          }          }
576          // COMPLETARE //          l1->nclstr1 =  i;      
         // COMPLETARE //  
         // COMPLETARE //  
         // COMPLETARE //  
         // COMPLETARE //  
         // COMPLETARE //  
577      }      }
578      return l1;  
579    //    return l1;
580  }  }
581  //--------------------------------------  //--------------------------------------
582  //  //
# Line 608  TrkCluster *TrkLevel1::GetCluster(int is Line 627  TrkCluster *TrkLevel1::GetCluster(int is
627  //  //
628  //  //
629  //--------------------------------------  //--------------------------------------
630  /**  // /**
631   * Load Position-Finding-Algorythm parameters (call the F77 routine).  //  * Load Position-Finding-Algorythm parameters (call the F77 routine).
632   *  //  *
633   */  //  */
634  int TrkLevel1::LoadPfaParam(TString path){  // int TrkLevel1::LoadPfaParam(TString path){
635                    
636      if( strcmp(path_.path,path.Data()) ){  //     if( path.IsNull() ){
637          cout <<"Loading p.f.a. param::eters\n";  //      path = gSystem->Getenv("PAM_CALIB");
638          strcpy(path_.path,path.Data());  //      if(path.IsNull()){
639          path_.pathlen = path.Length();  //          cout << " TrkLevel1::LoadPfaParam() ==> No PAMELA environment variables defined "<<endl;
640          path_.error   = 0;  //          return 0;
641          return readetaparam_();  //      }
642      }    //      path.Append("/trk-param/eta_param-0/");
643      return 0;  //     }
644  }  
645    //     strcpy(path_.path,path.Data());
646    //     path_.pathlen = path.Length();
647    //     path_.error   = 0;
648    //     cout <<"Loading p.f.a. parameters: "<<path<<endl;
649    //     return readetaparam_();
650    // }
651    
652    // /**
653    //  * Load magnetic field parameters (call the F77 routine).
654    //  *
655    //  */
656    // int TrkLevel1::LoadFieldParam(TString path){
657            
658    // //    if( strcmp(path_.path,path.Data()) ){
659    //     if( path.IsNull() ){
660    //      path = gSystem->Getenv("PAM_CALIB");
661    //      if(path.IsNull()){
662    //          cout << " TrkLevel1::LoadFieldParam() ==> No PAMELA environment variables defined "<<endl;
663    //          return 0;
664    //      }
665    //      path.Append("/trk-param/field_param-0/");
666    //     }
667    //     cout <<"Loading magnetic field "<<path<<endl;
668    //     strcpy(path_.path,path.Data());
669    //     path_.pathlen = path.Length();
670    //     path_.error   = 0;
671    //     return readb_();
672    // //    }      
673    // //    return 0;
674    // }
675    // /**
676    //  * Load magnetic field parameters (call the F77 routine).
677    //  *
678    //  */
679    // int TrkLevel1::LoadChargeParam(TString path){
680            
681    // //    if( strcmp(path_.path,path.Data()) ){
682    //     if( path.IsNull() ){
683    //      path = gSystem->Getenv("PAM_CALIB");
684    //      if(path.IsNull()){
685    //          cout << " TrkLevel1::LoadChargeParam() ==> No PAMELA environment variables defined "<<endl;
686    //          return 0;
687    //      }
688    //      path.Append("/trk-param/charge_param-1/");
689    //     }
690    //     cout <<"Loading charge-correlation parameters: "<<path<<endl;
691    //     strcpy(path_.path,path.Data());
692    //     path_.pathlen = path.Length();
693    //     path_.error   = 0;
694    //     return readchargeparam_();
695    // //    }      
696    // //    return 0;
697    // }
698    // /**
699    //  * Load magnetic field parameters (call the F77 routine).
700    //  *
701    //  */
702    // int TrkLevel1::LoadAlignmentParam(TString path){
703            
704    // //    if( strcmp(path_.path,path.Data()) ){
705    //     if( path.IsNull() ){
706    //      path = gSystem->Getenv("PAM_CALIB");
707    //      if(path.IsNull()){
708    //          cout << " TrkLevel1::LoadAlignmentParam() ==> No PAMELA environment variables defined "<<endl;
709    //          return 0;
710    //      }
711    //      path.Append("/trk-param/align_param-0/");
712    //     }
713    //     cout <<"Loading alignment parameters: "<<path<<endl;
714    //     strcpy(path_.path,path.Data());
715    //     path_.pathlen = path.Length();
716    //     path_.error   = 0;
717    //     return readalignparam_();
718    // //    }      
719    // //    return 0;
720    // }
721    // /**
722    //  * Load magnetic field parameters (call the F77 routine).
723    //  *
724    //  */
725    // int TrkLevel1::LoadMipParam(TString path){
726            
727    // //    if( strcmp(path_.path,path.Data()) ){
728    //     if( path.IsNull() ){
729    //      path = gSystem->Getenv("PAM_CALIB");
730    //      if(path.IsNull()){
731    //          cout << " TrkLevel1::LoadMipParam() ==> No PAMELA environment variables defined "<<endl;
732    //          return 0;
733    //      }
734    //      path.Append("/trk-param/mip_param-0/");
735    //     }
736    //     cout <<"Loading ADC-to-MIP conversion parameters: "<<path<<endl;
737    //     strcpy(path_.path,path.Data());
738    //     path_.pathlen = path.Length();
739    //     path_.error   = 0;
740    //     return readmipparam_();
741    // //    }      
742    // //    return 0;
743    // }
744    // /**
745    //  * Load magnetic field parameters (call the F77 routine).
746    //  *
747    //  */
748    // int TrkLevel1::LoadVKMaskParam(TString path){
749            
750    // //    if( strcmp(path_.path,path.Data()) ){
751    //     if( path.IsNull() ){
752    //      path = gSystem->Getenv("PAM_CALIB");
753    //      if(path.IsNull()){
754    //          cout << " TrkLevel1::LoadVKMaskParam() ==> No PAMELA environment variables defined "<<endl;
755    //          return 0;
756    //      }
757    //      path.Append("/trk-param/mask_param-1/");
758    //     }
759    //     cout <<"Loading VK-mask parameters: "<<path<<endl;
760    //     strcpy(path_.path,path.Data());
761    //     path_.pathlen = path.Length();
762    //     path_.error   = 0;
763    //     return readvkmask_();
764    // //    }      
765    // //    return 0;
766    // }
767    
768    // /**
769    //  * Load all (default) parameters. Environment variable must be defined.
770    //  *
771    //  */
772    // int TrkLevel1::LoadParams(){
773    
774    //     int result=0;
775        
776    //     result = result * LoadFieldParam();
777    //     result = result * LoadPfaParam();
778    //     result = result * LoadChargeParam();
779    //     result = result * LoadAlignmentParam();
780    //     result = result * LoadMipParam();
781    //     result = result * LoadVKMaskParam();
782    
783    //     return result;
784    // }
785    
786    
787    
788    int TrkLevel1::GetPfaNbinsAngle(){
789        TrkParams::Load(4);
790        if( !TrkParams::IsLoaded(4) ){
791            cout << "int TrkLevel1::GetPfaNbinsAngle() --- ERROR --- p.f.a. parameters  not loaded"<<endl;
792            return 0;
793        }
794        return pfa_.nangbin;
795    };
796    
797    int TrkLevel1::GetPfaNbinsETA(){
798        TrkParams::Load(4);
799        if( !TrkParams::IsLoaded(4) ){
800            cout << "int TrkLevel1::GetPfaNbinsETA() --- ERROR --- p.f.a. parameters  not loaded"<<endl;
801            return 0;
802        }
803        return pfa_.netaval;
804    };
805    
806  /**  /**
807   *   *
808   *   *
809   */   */
810  float* TrkLevel1::GetPfaCoord(TString pfa, int nview, int nladder, int nang){  float* TrkLevel1::GetPfaCoord(TString pfa, int nview, int nladder, int nang){
811    
812        TrkParams::Load(4);
813        if( !TrkParams::IsLoaded(4) ){
814            cout << "float* TrkLevel1::GetPfaCoord(TString pfa, int nview, int nladder, int nang) --- ERROR --- p.f.a. parameters  not loaded"<<endl;
815            return 0;
816        }
817        
818      int nbins = GetPfaNbinsETA();      int nbins = GetPfaNbinsETA();
819      if(!nbins)return 0;      if(!nbins)return 0;
# Line 655  float* TrkLevel1::GetPfaCoord(TString pf Line 840  float* TrkLevel1::GetPfaCoord(TString pf
840    
841  float* TrkLevel1::GetPfaAbs(TString pfa, int nang){  float* TrkLevel1::GetPfaAbs(TString pfa, int nang){
842        
843        TrkParams::Load(4);
844        if( !TrkParams::IsLoaded(4) ){
845            cout << "float* TrkLevel1::GetPfaAbs(TString pfa, int nang) --- ERROR --- p.f.a. parameters  not loaded"<<endl;
846            return 0;
847        }
848    
849      int nbins = GetPfaNbinsETA();      int nbins = GetPfaNbinsETA();
850      if(!nbins)return 0;      if(!nbins)return 0;
851    
# Line 673  float* TrkLevel1::GetPfaAbs(TString pfa, Line 864  float* TrkLevel1::GetPfaAbs(TString pfa,
864    
865      return fcorr;      return fcorr;
866    
   
867  };  };
868    
869    /**
870     * Method to call the F77 routine that performs level1->level2 processing.
871     * The level2 output is stored in a common block, which can be retrieved
872     * by mean of the method TrkLevel2::SetFromLevel2Struct().
873     * @param pfa Position finding algorythm used to reconstruct the track
874     * Implemented algorythms:
875     * 0  ETA (default)
876     * 1  ---
877     * 2  ETA2
878     * 3  ETA3
879     * 4  ETA4
880     * 10 COG
881     * 11 COG1
882     * 12 COG2
883     * 13 COG3
884     * 14 COG4
885     * NB If the TrkLevel1 object is readout from a tree, and the
886     * TrkLevel1::ProcessEvent(int pfa) is used to reprocess the event, attention
887     * should be payed to the fact that single clusters (clusters not associated
888     * with any track) might not be stored. Full reprocessing should be done from
889     * level0 data.
890     */
891    int TrkLevel1::ProcessEvent(int pfa){
892    
893    //    cout << "int TrkLevel1::ProcessEvent()" << endl;
894        TrkParams::Load( );
895        if( !TrkParams::IsLoaded() )return 0;
896    
897        GetLevel1Struct();
898    
899        analysisflight_(&pfa);
900    
901        return 1;
902    
903    }
904    
905    
906  ClassImp(TrkLevel1);  ClassImp(TrkLevel1);

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.23