]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Improved sharing
authorhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Jul 2011 13:13:22 +0000 (13:13 +0000)
committerhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Jul 2011 13:13:22 +0000 (13:13 +0000)
PWG2/FORWARD/analysis2/AliFMDSharingFilter.cxx

index 096dd4abe8bc3277b712b611069b62ce70ffbdf3..267f4119710c2574cc881db9902ae43a2f272bf8 100644 (file)
@@ -297,6 +297,7 @@ AliFMDSharingFilter::Filter(const AliESDFMD& input,
 #endif 
        //For simple merging
        Bool_t used = kFALSE;
+       Double_t eTotal = -1;
        for(UShort_t t = 0; t < nstr; t++) {
          output.SetMultiplicity(d,r,s,t,0.);
          Float_t mult = SignalInStrip(input,d,r,s,t);
@@ -328,18 +329,40 @@ AliFMDSharingFilter::Filter(const AliESDFMD& input,
          
          if(fUseSimpleMerging) {
            Float_t etot = 0;
-           if(mult > GetLowCut(d, r, eta)) etot = mult;
-           if(used) {used = kFALSE; continue; }
            
-           if(mult > GetLowCut(d, r, eta) && 
-              multNext > GetLowCut(d, r, eta) && 
-              (mult < GetHighCut(d, r, eta ,false) ||
-               multNext < GetHighCut(d, r, eta ,false))) {
-             etot = mult + multNext;
-             used=kTRUE;
+           if(eTotal > 0) {
+             if( multNext > GetLowCut(d, r, eta) && 
+                 multNext < GetHighCut(d, r, eta ,false)) {
+               eTotal = eTotal + multNext;
+               used = kTRUE;
+             }
+             else used = kFALSE;
+             
+             etot   = eTotal;
+             eTotal = -1;
            }
-           
+           else {
+             if(mult > GetLowCut(d, r, eta)) etot = mult;
+             if(used) {used = kFALSE; continue; }
+             
+             if(mult > GetLowCut(d, r, eta) && 
+                multNext > GetLowCut(d, r, eta) && 
+                (mult < GetHighCut(d, r, eta ,false) ||
+                 multNext < GetHighCut(d, r, eta ,false))) {
+               if(mult>multNext) {
+                 etot = mult + multNext;
+                 used=kTRUE;
+               }
+               else {
+                 etot   = 0;
+                 eTotal = mult + multNext;
+               }
+             }
+           }
+                   
            mergedEnergy = etot;
+           //if(mult>0 && multNext >0)
+           //  std::cout<<mult<<"  "<<multNext<<"  "<<mergedEnergy<<std::endl;
          }
          else {
            // Get next and previous signal - if any