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

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

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

revision 1.53 by pam-fi, Tue Feb 3 13:57:15 2009 UTC revision 1.56 by pam-fi, Thu Feb 27 11:24:43 2014 UTC
# Line 687  void TrkTrack::FillMiniStruct(cMini2trac Line 687  void TrkTrack::FillMiniStruct(cMini2trac
687  //      --- temporaneo ----------------------------  //      --- temporaneo ----------------------------
688    
689          if( XGood(i) || YGood(i) ){          if( XGood(i) || YGood(i) ){
690              double segment = 2.;//cm              //NB!! the length of the sensor is not exactely taken into account    
691                double segment = 7.;// 2.;//cm //Elena 10th
692              // NB: i parametri di allineamento hanno una notazione particolare!!!              // NB: i parametri di allineamento hanno una notazione particolare!!!
693              // sensor = 0 (hybrid side), 1              // sensor = 0 (hybrid side), 1
694              // ladder = 0-2 (increasing x)              // ladder = 0-2 (increasing x)
# Line 697  void TrkTrack::FillMiniStruct(cMini2trac Line 698  void TrkTrack::FillMiniStruct(cMini2trac
698              int il = (int)GetLadder(i);              int il = (int)GetLadder(i);
699                            
700              double omega   = 0.;              double omega   = 0.;
701              double beta    = 0.;              //      double beta    = 0.;// EM GCC 4.7
702              double gamma   = 0.;              //      double gamma   = 0.;
703              if(              if(
704                  (is < 0 || is > 1 || ip < 0 || ip > 5 || il < 0 || il > 2) &&                  (is < 0 || is > 1 || ip < 0 || ip > 5 || il < 0 || il > 2) &&
705                  true){                  true){
# Line 708  void TrkTrack::FillMiniStruct(cMini2trac Line 709  void TrkTrack::FillMiniStruct(cMini2trac
709                  cout << " is ip il = "<<is<<" "<<ip<<" "<<il<<endl;                  cout << " is ip il = "<<is<<" "<<ip<<" "<<il<<endl;
710              }else{              }else{
711                  omega   = alignparameters_.omega[is][il][ip];                  omega   = alignparameters_.omega[is][il][ip];
712                  beta    = alignparameters_.beta[is][il][ip];                  //              beta    = alignparameters_.beta[is][il][ip];// EM GCC 4.7 unused
713                  gamma   = alignparameters_.gamma[is][il][ip];                  //              gamma   = alignparameters_.gamma[is][il][ip];// EM GCC 4.7 unused
714              }              }
715                            
716              if(       XGood(i) && !YGood(i) ){              if(       XGood(i) && !YGood(i) ){
# Line 760  void TrkTrack::SetFromMiniStruct(cMini2t Line 761  void TrkTrack::SetFromMiniStruct(cMini2t
761          zm[i]  = track->zm[i];          zm[i]  = track->zm[i];
762          axv[i] = track->axv[i];          axv[i] = track->axv[i];
763          ayv[i] = track->ayv[i];          ayv[i] = track->ayv[i];
764            resx[i] = track->resx[i]; //Elena 10th
765            resy[i] = track->resy[i];
766      }      }
767            
768  }  }
# Line 810  Bool_t TrkTrack::EvaluateClusterPosition Line 813  Bool_t TrkTrack::EvaluateClusterPosition
813    
814      for(int ip=0; ip<6; ip++){      for(int ip=0; ip<6; ip++){
815  //      cout << ip<<" ** "<<xm[ip]<<" / "<<ym[ip]<<endl;;  //      cout << ip<<" ** "<<xm[ip]<<" / "<<ym[ip]<<endl;;
816          int icx = GetClusterX_ID(ip)+1;          int icx = GetClusterX_ID(ip)+1;//0=no-cluster,1-N
817          int icy = GetClusterY_ID(ip)+1;          int icy = GetClusterY_ID(ip)+1;//0=no-cluster,1-N
818          int sensor = GetSensor(ip)+1;//<< convenzione "Paolo"          int sensor = GetSensor(ip)+1;//<< convenzione "Paolo"
819          if(ip==5 && sensor!=0)sensor=3-sensor;//<< convenzione "Elena"          if(ip==5 && sensor!=0)sensor=3-sensor;//<< convenzione "Elena"
820          int ladder = GetLadder(ip)+1;          int ladder = GetLadder(ip)+1;
# Line 825  Bool_t TrkTrack::EvaluateClusterPosition Line 828  Bool_t TrkTrack::EvaluateClusterPosition
828          float bfy = 10*TrkParams::GetBY(v);//Tesla          float bfy = 10*TrkParams::GetBY(v);//Tesla
829          int ipp=ip+1;          int ipp=ip+1;
830          xyzpam_(&ipp,&icx,&icy,&ladder,&sensor,&ax,&ay,&bfx,&bfy);          xyzpam_(&ipp,&icx,&icy,&ladder,&sensor,&ax,&ay,&bfx,&bfy);
831          if(icx<0 || icy<0)return false;          //      if(icx<0 || icy<0)return false;
832      }      }
833      return true;      return true;
834  }  }
# Line 875  void TrkTrack::Fit(double pfixed, int& f Line 878  void TrkTrack::Fit(double pfixed, int& f
878      extern cMini2track track_;      extern cMini2track track_;
879      fail = 0;      fail = 0;
880    
881      FillMiniStruct(track_);      //    FillMiniStruct(track_);
882                    
883      if(froml1!=0){      if(froml1!=0){
884          if( !EvaluateClusterPositions() ){          if( !EvaluateClusterPositions() ){
# Line 914  void TrkTrack::Fit(double pfixed, int& f Line 917  void TrkTrack::Fit(double pfixed, int& f
917          if(iprint)cout << "ERROR: ifail= " << ifail << endl;          if(iprint)cout << "ERROR: ifail= " << ifail << endl;
918          fail = 1;          fail = 1;
919      }      }
920        if(chi2!=chi2){
921            if(iprint)cout << "ERROR: chi2= " << chi2 << endl;      
922            FitReset();
923            fail = 1;      
924        }
925      //  ------------------------------------------      //  ------------------------------------------
926            
927      SetFromMiniStruct(&track_);      SetFromMiniStruct(&track_);
# Line 1019  Bool_t TrkTrack::IsInsideCavity(float to Line 1027  Bool_t TrkTrack::IsInsideCavity(float to
1027   * by the intersection among magnet cavity, silicon-plane sensitive area and   * by the intersection among magnet cavity, silicon-plane sensitive area and
1028   * ToF sensitive area (nominal values from the official document used to   * ToF sensitive area (nominal values from the official document used to
1029   * calculate the geometrical factor)   * calculate the geometrical factor)
1030     * @param toll Tolerance around the nominal volume (toll>0 define an inner fiducial volume)
1031   */   */
1032  Bool_t TrkTrack::IsInsideAcceptance(){  // Bool_t TrkTrack::IsInsideAcceptance(){
1033    
1034    //     int ngf = TrkParams::nGF;
1035    //     for(int i=0; i<ngf; i++){
1036    //      if(
1037    //          xGF[i] <= TrkParams::xGF_min[i] ||
1038    //          xGF[i] >= TrkParams::xGF_max[i] ||
1039    //          yGF[i] <= TrkParams::yGF_min[i] ||
1040    //          yGF[i] >= TrkParams::yGF_max[i] ||
1041    //          false)return false;
1042    //     }
1043    //     return true;
1044    
1045    // }
1046    Bool_t TrkTrack::IsInsideAcceptance(float toll){
1047    
1048    
1049      int ngf = TrkParams::nGF;      int ngf = TrkParams::nGF;
1050      for(int i=0; i<ngf; i++){      for(int i=0; i<ngf; i++){
1051            //
1052    //      cout << endl << TrkParams::GF_element[i];
1053            if(
1054                TrkParams::GF_element[i].CompareTo("S11") &&
1055                TrkParams::GF_element[i].CompareTo("S12") &&
1056                TrkParams::GF_element[i].CompareTo("S21") &&
1057                TrkParams::GF_element[i].CompareTo("S22") &&
1058                TrkParams::GF_element[i].CompareTo("T1")  &&
1059                TrkParams::GF_element[i].CompareTo("CUF") &&
1060                TrkParams::GF_element[i].CompareTo("T2")  &&
1061                TrkParams::GF_element[i].CompareTo("T3")  &&
1062                TrkParams::GF_element[i].CompareTo("T4")  &&
1063                TrkParams::GF_element[i].CompareTo("T5")  &&
1064                TrkParams::GF_element[i].CompareTo("CLF") &&
1065                TrkParams::GF_element[i].CompareTo("T6")  &&
1066                TrkParams::GF_element[i].CompareTo("S31") &&
1067                TrkParams::GF_element[i].CompareTo("S32") &&
1068                true)continue;
1069            // apply condition only within the cavity
1070    //      cout << " -- "<<xGF[i]<<" "<<yGF[i];
1071          if(          if(
1072              xGF[i] <= TrkParams::xGF_min[i] ||              xGF[i] <= TrkParams::xGF_min[i] + toll ||
1073              xGF[i] >= TrkParams::xGF_max[i] ||              xGF[i] >= TrkParams::xGF_max[i] - toll ||
1074              yGF[i] <= TrkParams::yGF_min[i] ||              yGF[i] <= TrkParams::yGF_min[i] + toll ||
1075              yGF[i] >= TrkParams::yGF_max[i] ||              yGF[i] >= TrkParams::yGF_max[i] - toll ||
1076              false)return false;              false){
1077                
1078                return false;
1079            }
1080      }      }
1081      return true;      return true;
1082    }
1083    
1084    /**
1085     * Returns true if the track is inside one of the surfaces which define the
1086     * geometrical acceptance.
1087     * @param surf tag of the surface (possible values are: S11 S12 S21 S22 T1
1088     * CUF T2 T3 T4 T5 CLF T6 S31 S32).
1089     * @param toll  Tolerance around the nominal surface (toll>0 define an inner
1090     * fiducial surface)
1091    */
1092    Bool_t TrkTrack::IsInsideGFSurface(const char* surf, float toll){
1093    
1094    
1095        int ngf = TrkParams::nGF;
1096        bool SURFOK = false;
1097        for(int i=0; i<ngf; i++){
1098            if(  !TrkParams::GF_element[i].CompareTo(surf)  ){
1099                SURFOK=true;
1100                if(
1101                    xGF[i] > TrkParams::xGF_min[i] + toll &&
1102                    xGF[i] < TrkParams::xGF_max[i] - toll &&
1103                    yGF[i] > TrkParams::yGF_min[i] + toll &&
1104                    yGF[i] < TrkParams::yGF_max[i] - toll &&
1105                    true)return true;
1106            }
1107        }
1108        if( !SURFOK )cout << " Bool_t TrkTrack::IsInsideGFSurface(char* surf, float toll) --> suface "<<surf<<" not defined "<<endl;
1109        return false;
1110    
1111  }  }
1112    
1113  /**  /**
1114   * Method to retrieve ID (0,1,...) of x-cluster (if any) associated to this track.   * Method to retrieve ID (0,1,...) of x-cluster (if any) associated to this track.
1115   * If no cluster is associated, ID=-1.   * If no cluster is associated, ID=-1.
# Line 1084  Int_t TrkTrack::GetSensor(int ip){ Line 1160  Int_t TrkTrack::GetSensor(int ip){
1160  void TrkTrack::SetXGood(int ip, int clid, int il, int is, bool bad){  void TrkTrack::SetXGood(int ip, int clid, int il, int is, bool bad){
1161  //    int il=0;       //ladder (temporary)  //    int il=0;       //ladder (temporary)
1162  //    bool bad=false; //ladder (temporary)  //    bool bad=false; //ladder (temporary)
1163      if(ip<0||ip>5||clid<0||il<-1||il>2||is<-1||is>1)      if(ip<0||ip>5||clid<1||il<-1||il>2||is<-1||is>1)
1164          cout << " void TrkTrack::SetXGood(int,int,int,int,bool) --> MA SEI DI COCCIO?!?!"<<endl;          cout << " void TrkTrack::SetXGood(int,int,int,int,bool) --> MA SEI DI COCCIO?!?!"<<endl;
1165      xgood[ip]=(il+1)*100000000+(is+1)*10000000+clid;      xgood[ip]=(il+1)*100000000+(is+1)*10000000+clid;
1166      if(bad)xgood[ip]=-xgood[ip];      if(bad)xgood[ip]=-xgood[ip];
# Line 1101  void TrkTrack::SetXGood(int ip, int clid Line 1177  void TrkTrack::SetXGood(int ip, int clid
1177  void TrkTrack::SetYGood(int ip, int clid, int il, int is, bool bad){  void TrkTrack::SetYGood(int ip, int clid, int il, int is, bool bad){
1178  //    int il=0;       //ladder (temporary)  //    int il=0;       //ladder (temporary)
1179  //    bool bad=false; //ladder (temporary)  //    bool bad=false; //ladder (temporary)
1180      if(ip<0||ip>5||clid<0||il<-1||il>2||is<-1||is>1)      if(ip<0||ip>5||clid<1||il<-1||il>2||is<-1||is>1)
1181          cout << " void TrkTrack::SetYGood(int,int,int,int,bool) --> MA SEI DI COCCIO?!?!"<<endl;          cout << " void TrkTrack::SetYGood(int,int,int,int,bool) --> MA SEI DI COCCIO?!?!"<<endl;
1182      ygood[ip]=(il+1)*100000000+(is+1)*10000000+clid;      ygood[ip]=(il+1)*100000000+(is+1)*10000000+clid;
1183      if(bad)ygood[ip]=-ygood[ip];      if(bad)ygood[ip]=-ygood[ip];

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.56

  ViewVC Help
Powered by ViewVC 1.1.23