SHARE
TWEET

Untitled

a guest Apr 21st, 2017 47 in 8 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // -------------------------------------------------------------------
  2. // We now have our local arrays filled with details for 100 hits.
  3. // Try to make sense of them.
  4. // Split the 100 hits according to the event number:
  5. // -------------------------------------------------------------------
  6.        int Jcon1   = 1;
  7.        int Jcon2   = 1;
  8.        int JevNo   = 0;
  9.        int JevNext = 0;
  10.        int istep1  = 0;
  11.        int istep2  = 0;
  12.        NhitsInEvent= 0;
  13.        int Ngood   = 0;
  14. //
  15.        do {
  16.           NhitsInEvent = 0;
  17.           Ngood        = 0;
  18.           istep1 = istep1 + 1;
  19.           Jcon1 = 1;
  20.           JevNo = Ievts[istep1 - 1];
  21.           NhitsInEvent = NhitsInEvent + 1;
  22.           Ngood = Ngood + 1;
  23.           ModEvent[Ngood - 1] = Module[istep1-1];
  24.           LayEvent[Ngood - 1] = Layers[istep1-1];
  25.           IstEvent[Ngood - 1] = Istraw[istep1-1];
  26.           RawTevent[Ngood - 1]= RawTimes[istep1-1];
  27.           istep2 = istep1;
  28. //        cout<<" In outer loop: istep1 is: "<<istep1<<endl;
  29. //        cout<<" JevNo is: "<<JevNo<<endl;
  30.           do {
  31.              Jcon2  = 0;
  32.              istep2 = istep2 + 1;
  33. //           cout<<" In inner loop: istep2 is: "<<istep2<<endl;
  34.              JevNext = Ievts[istep2-1];
  35. //           cout<<" JevNext is: "<<JevNext<<endl;
  36.              if(JevNext == JevNo) {
  37.                                 Jcon2 = 1;
  38.                                 NhitsInEvent = NhitsInEvent + 1;
  39.                                 int GoodHit = 1;
  40.                                 for(int itest=1; itest<=Ngood; itest++) {
  41.                                    int modtst = ModEvent[itest-1];
  42.                                    int laytst = LayEvent[itest-1];
  43.                                    int isttst = IstEvent[itest-1];
  44.                                    if(Module[istep2-1] == modtst) {
  45.                                      if(Layers[istep2-1] == laytst) {
  46.                                        if(Istraw[istep2-1] == isttst) {
  47.                                                                       GoodHit = 0;
  48.                                        }
  49.                                      }
  50.                                    }
  51.                                 }
  52.                                 if(GoodHit == 1) {
  53.                                   Ngood = Ngood + 1;
  54.                                   ModEvent[Ngood - 1] = Module[istep2-1];
  55.                                   LayEvent[Ngood - 1] = Layers[istep2-1];
  56.                                   IstEvent[Ngood - 1] = Istraw[istep2-1];
  57.                                   RawTevent[Ngood - 1]= RawTimes[istep2-1];
  58.                                 }
  59.              }
  60.              if(JevNext != JevNo) {
  61.                                   Jcon2 = 0;
  62.              }
  63.              if(istep2 > 98) {
  64.                              Jcon2 = 0;
  65.              }
  66.           } while (Jcon2 == 1);
  67. // -------------------------------------------------------------------
  68.           istep1 = istep2 - 1;
  69. //        cout<<" Back out. istep1 is now: "<<istep1<<endl;
  70. //        cout<<" Event "<<JevNo<<" has "<<NhitsInEvent<<" hits. "<<endl;
  71. //        cout<<" Event "<<JevNo<<" has "<<Ngood<<" stored hits. "<<endl;
  72. // -------------------------------------------------------------------
  73. // For tracking to proceed demand that there is a module with one hit
  74. // in each layer that look a reasonable bet to be a track:
  75. // -------------------------------------------------------------------
  76.           int DoTracking = 0;
  77.           int i2 = 2;
  78.           Bkzero(i2);
  79.           Nhmods[0] = 0;
  80.           Nhmods[1] = 0;
  81.           Nhmods[2] = 0;
  82.           for(int igood=1; igood<=Ngood; igood++) {
  83.              int modd =  ModEvent[igood - 1];
  84.              Nhmods[modd-1] = Nhmods[modd-1] + 1;
  85.              int layy =  LayEvent[igood - 1];
  86.              int istt =  IstEvent[igood - 1];
  87.              Rtimes[istt-1][layy-1][modd-1] = RawTevent[igood - 1];
  88.              float rrrr =  RawTevent[igood - 1];
  89. //           cout<<" Unpacking hit in "<<istt<<" "<<layy<<" "<<modd<<" "<<rrrr<<endl;
  90.           }
  91. //        cout<<" Numbers of hits in each module: "<<endl;
  92. //        cout<<" Module 1: "<<Nhmods[0]<<endl;
  93. //        cout<<" Module 2: "<<Nhmods[1]<<endl;
  94. //        cout<<" Module 3: "<<Nhmods[2]<<endl;
  95. // --------------------------------------
  96. // If a module has 4 hits check they are
  97. // in the different layers:
  98. // --------------------------------------
  99.           for(int imod=1; imod<=3; imod++) {
  100.              if(Nhmods[imod-1] == 4) {
  101. // Module has 4 hits:
  102.                Nhlays[0] = 0;    
  103.                Nhlays[1] = 0;
  104.                Nhlays[2] = 0;
  105.                Nhlays[3] = 0;
  106.                int is1   = 0;
  107.                int is2   = 0;
  108.                int is3   = 0;
  109.                int is4   = 0;
  110.                for(int ist=1; ist<=32; ist++) {
  111.                   if(Rtimes[ist-1][0][imod-1] > 0.0) {
  112.                     Nhlays[0] = Nhlays[0] + 1;
  113.                     is1 = ist;
  114.                   }
  115.                   if(Rtimes[ist-1][1][imod-1] > 0.0) {
  116.                     Nhlays[1] = Nhlays[1] + 1;
  117.                     is2 = ist;
  118.                   }
  119.                   if(Rtimes[ist-1][2][imod-1] > 0.0) {
  120.                     Nhlays[2] = Nhlays[2] + 1;
  121.                     is3 = ist;
  122.                   }
  123.                   if(Rtimes[ist-1][3][imod-1] > 0.0) {
  124.                     Nhlays[3] = Nhlays[3] + 1;
  125.                     is4 = ist;
  126.                   }
  127.                }
  128.                if(Nhlays[0] == 1 && Nhlays[1] == 1) {
  129.                  if(Nhlays[2] == 1 && Nhlays[3] == 1) {
  130. // Module has 4 hits in separate layers:  
  131.                    if(abs(is1 - is2) < 2) {
  132.                      if(abs(is1 - is3) < 3) {
  133.                        if(abs(is3 - is4) < 2) {
  134.                                               DoTracking = 1;
  135.                        }
  136.                      }
  137.                    }
  138.                  }
  139.                }
  140.              }
  141.           }
  142. //        if(JevNo == 9386) {
  143. //                          DoTracking = 1;
  144. //        }
  145.           if(DoTracking == 1) {
  146. //          cout<<" About to track in event: "<<JevNo<<endl;
  147.             for(int imod=1;imod<=3; imod++) {
  148.                for(int ilay=1; ilay<=4; ilay++) {
  149.                   for(int istr=1; istr<=32; istr++) {
  150.                      if(Rtimes[istr-1][ilay-1][imod-1] > 0.0) {
  151.                        float rrr = Rtimes[istr-1][ilay-1][imod-1];
  152. //                     cout<<" Hit in "<<istr<<" "<<ilay<<" "<<imod<<" "<<rrr<<endl;
  153.                      }
  154.                   }
  155.                }
  156.             }
  157. //          int iblob2;
  158. //          cin>>iblob2;
  159. //
  160.             Strevt();
  161.             Strana();
  162.           }
  163. // -------------------------------------------------------------------
  164.           if(istep1 > 98) {
  165.                           Jcon1 = 0;
  166.           }
  167.        } while (Jcon1 == 1);
  168. // -------------------------------------------------------------------
  169. // Get the next 100 hits:
  170. // -------------------------------------------------------------------
  171.     }
RAW Paste Data
Top