ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
//____________________________________________________________________
//                                                                          
// This class implements the FMD offline trigger as requested for 
// ALICE first physics.
// 
// 
// 
//
#include "AliFMDOfflineTrigger.h"	
#include <iostream>
#include "AliESDFMD.h"

//____________________________________________________________________
ClassImp(AliFMDOfflineTrigger)
#if 0
  ; // This is here to keep Emacs for indenting the next line
#endif

//____________________________________________________________________
AliFMDOfflineTrigger::AliFMDOfflineTrigger() : 
  fLowCut(0.2),
  fHitCut(0.5)
{
  // CTOR 

}

//____________________________________________________________________
AliFMDOfflineTrigger::AliFMDOfflineTrigger(const AliFMDOfflineTrigger& o)
  : TObject(o),
    fLowCut(o.fLowCut),
    fHitCut(o.fHitCut)
{
  
  // Copy Ctor 
}

//____________________________________________________________________
AliFMDOfflineTrigger&
AliFMDOfflineTrigger::operator=(const AliFMDOfflineTrigger& /*o*/)
{
  // Assignment operator 
  return (*this);
}
//_____________________________________________________________________
Bool_t AliFMDOfflineTrigger::ASideHasHit(AliESDFMD* fmd) {

  Float_t totalMult = 0;
  for(UShort_t det=1;det<=2;det++) {
    Int_t nRings = (det == 1 ? 1 : 2);
    for (UShort_t ir = 0; ir < nRings; ir++) {
      Char_t   ring = (ir == 0 ? 'I' : 'O');
      UShort_t nsec = (ir == 0 ? 20  : 40);
      UShort_t nstr = (ir == 0 ? 512 : 256);
      for(UShort_t sec =0; sec < nsec;  sec++)  {
	for(UShort_t strip = 0; strip < nstr; strip++) {
	  Float_t mult = fmd->Multiplicity(det,ring,sec,strip);
	  if(mult == AliESDFMD::kInvalidMult) continue;
	  
	  if(mult > fLowCut)
	    totalMult = totalMult + mult;
	  else
	    {
	      if( totalMult > fHitCut) {
		return kTRUE;
	      }
	      else totalMult = 0 ;
	    }
	}
      }
    }
  }
  return kFALSE;
  
}
//_____________________________________________________________________
Bool_t AliFMDOfflineTrigger::CSideHasHit(AliESDFMD* fmd) {
  
  Float_t totalMult = 0;
  UShort_t det = 3;
  Int_t nRings = 2;
  for (UShort_t ir = 0; ir < nRings; ir++) {
    Char_t   ring = (ir == 0 ? 'I' : 'O');
    UShort_t nsec = (ir == 0 ? 20  : 40);
    UShort_t nstr = (ir == 0 ? 512 : 256);
    for(UShort_t sec =0; sec < nsec;  sec++)  {
      for(UShort_t strip = 0; strip < nstr; strip++) {
	Float_t mult = fmd->Multiplicity(det,ring,sec,strip);
	if(mult == AliESDFMD::kInvalidMult) continue;
	
	if(mult > fLowCut)
	  totalMult = totalMult + mult;
	else
	  {
	    if( totalMult > fHitCut) {
	      return kTRUE;
	    }
	    else totalMult = 0 ;
	  }
      }
    }
  }
 
  return kFALSE;
}
//____________________________________________________________________
//
// EOF
//
 AliFMDOfflineTrigger.cxx:1
 AliFMDOfflineTrigger.cxx:2
 AliFMDOfflineTrigger.cxx:3
 AliFMDOfflineTrigger.cxx:4
 AliFMDOfflineTrigger.cxx:5
 AliFMDOfflineTrigger.cxx:6
 AliFMDOfflineTrigger.cxx:7
 AliFMDOfflineTrigger.cxx:8
 AliFMDOfflineTrigger.cxx:9
 AliFMDOfflineTrigger.cxx:10
 AliFMDOfflineTrigger.cxx:11
 AliFMDOfflineTrigger.cxx:12
 AliFMDOfflineTrigger.cxx:13
 AliFMDOfflineTrigger.cxx:14
 AliFMDOfflineTrigger.cxx:15
 AliFMDOfflineTrigger.cxx:16
 AliFMDOfflineTrigger.cxx:17
 AliFMDOfflineTrigger.cxx:18
 AliFMDOfflineTrigger.cxx:19
 AliFMDOfflineTrigger.cxx:20
 AliFMDOfflineTrigger.cxx:21
 AliFMDOfflineTrigger.cxx:22
 AliFMDOfflineTrigger.cxx:23
 AliFMDOfflineTrigger.cxx:24
 AliFMDOfflineTrigger.cxx:25
 AliFMDOfflineTrigger.cxx:26
 AliFMDOfflineTrigger.cxx:27
 AliFMDOfflineTrigger.cxx:28
 AliFMDOfflineTrigger.cxx:29
 AliFMDOfflineTrigger.cxx:30
 AliFMDOfflineTrigger.cxx:31
 AliFMDOfflineTrigger.cxx:32
 AliFMDOfflineTrigger.cxx:33
 AliFMDOfflineTrigger.cxx:34
 AliFMDOfflineTrigger.cxx:35
 AliFMDOfflineTrigger.cxx:36
 AliFMDOfflineTrigger.cxx:37
 AliFMDOfflineTrigger.cxx:38
 AliFMDOfflineTrigger.cxx:39
 AliFMDOfflineTrigger.cxx:40
 AliFMDOfflineTrigger.cxx:41
 AliFMDOfflineTrigger.cxx:42
 AliFMDOfflineTrigger.cxx:43
 AliFMDOfflineTrigger.cxx:44
 AliFMDOfflineTrigger.cxx:45
 AliFMDOfflineTrigger.cxx:46
 AliFMDOfflineTrigger.cxx:47
 AliFMDOfflineTrigger.cxx:48
 AliFMDOfflineTrigger.cxx:49
 AliFMDOfflineTrigger.cxx:50
 AliFMDOfflineTrigger.cxx:51
 AliFMDOfflineTrigger.cxx:52
 AliFMDOfflineTrigger.cxx:53
 AliFMDOfflineTrigger.cxx:54
 AliFMDOfflineTrigger.cxx:55
 AliFMDOfflineTrigger.cxx:56
 AliFMDOfflineTrigger.cxx:57
 AliFMDOfflineTrigger.cxx:58
 AliFMDOfflineTrigger.cxx:59
 AliFMDOfflineTrigger.cxx:60
 AliFMDOfflineTrigger.cxx:61
 AliFMDOfflineTrigger.cxx:62
 AliFMDOfflineTrigger.cxx:63
 AliFMDOfflineTrigger.cxx:64
 AliFMDOfflineTrigger.cxx:65
 AliFMDOfflineTrigger.cxx:66
 AliFMDOfflineTrigger.cxx:67
 AliFMDOfflineTrigger.cxx:68
 AliFMDOfflineTrigger.cxx:69
 AliFMDOfflineTrigger.cxx:70
 AliFMDOfflineTrigger.cxx:71
 AliFMDOfflineTrigger.cxx:72
 AliFMDOfflineTrigger.cxx:73
 AliFMDOfflineTrigger.cxx:74
 AliFMDOfflineTrigger.cxx:75
 AliFMDOfflineTrigger.cxx:76
 AliFMDOfflineTrigger.cxx:77
 AliFMDOfflineTrigger.cxx:78
 AliFMDOfflineTrigger.cxx:79
 AliFMDOfflineTrigger.cxx:80
 AliFMDOfflineTrigger.cxx:81
 AliFMDOfflineTrigger.cxx:82
 AliFMDOfflineTrigger.cxx:83
 AliFMDOfflineTrigger.cxx:84
 AliFMDOfflineTrigger.cxx:85
 AliFMDOfflineTrigger.cxx:86
 AliFMDOfflineTrigger.cxx:87
 AliFMDOfflineTrigger.cxx:88
 AliFMDOfflineTrigger.cxx:89
 AliFMDOfflineTrigger.cxx:90
 AliFMDOfflineTrigger.cxx:91
 AliFMDOfflineTrigger.cxx:92
 AliFMDOfflineTrigger.cxx:93
 AliFMDOfflineTrigger.cxx:94
 AliFMDOfflineTrigger.cxx:95
 AliFMDOfflineTrigger.cxx:96
 AliFMDOfflineTrigger.cxx:97
 AliFMDOfflineTrigger.cxx:98
 AliFMDOfflineTrigger.cxx:99
 AliFMDOfflineTrigger.cxx:100
 AliFMDOfflineTrigger.cxx:101
 AliFMDOfflineTrigger.cxx:102
 AliFMDOfflineTrigger.cxx:103
 AliFMDOfflineTrigger.cxx:104
 AliFMDOfflineTrigger.cxx:105
 AliFMDOfflineTrigger.cxx:106
 AliFMDOfflineTrigger.cxx:107
 AliFMDOfflineTrigger.cxx:108
 AliFMDOfflineTrigger.cxx:109
 AliFMDOfflineTrigger.cxx:110
 AliFMDOfflineTrigger.cxx:111
 AliFMDOfflineTrigger.cxx:112
 AliFMDOfflineTrigger.cxx:113
 AliFMDOfflineTrigger.cxx:114
 AliFMDOfflineTrigger.cxx:115
 AliFMDOfflineTrigger.cxx:116
 AliFMDOfflineTrigger.cxx:117
 AliFMDOfflineTrigger.cxx:118
 AliFMDOfflineTrigger.cxx:119
 AliFMDOfflineTrigger.cxx:120
 AliFMDOfflineTrigger.cxx:121
 AliFMDOfflineTrigger.cxx:122
 AliFMDOfflineTrigger.cxx:123