]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONResponseFactory.cxx
flag to switch off/on using OCDB
[u/mrichter/AliRoot.git] / MUON / AliMUONResponseFactory.cxx
index 2c73b8670753d6ee9f15dbb454339d5229339df1..0b7bed9dc50b1328b5fc2c94416cade6d7267ca5 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-// -----------------------------
+/* $Id$ */
+
+//-----------------------------------------------------------------------------
 // Class AliMUONResponseFactory
 // -----------------------------
 // Factory for muon response
 // Class separated from AliMUONFactoryV4
-
-/* $Id$ */
+//-----------------------------------------------------------------------------
 
 #include "AliMUONResponseFactory.h"
 #include "AliRun.h"
 
 #include "AliMUON.h"
 #include "AliMUONConstants.h"
-#include "AliMUONTriggerConstants.h"
 #include "AliMUONChamber.h"
 #include "AliMUONResponseV0.h"
 #include "AliMUONResponseTrigger.h"
 #include "AliMUONResponseTriggerV1.h"
 
+/// \cond CLASSIMP
 ClassImp(AliMUONResponseFactory)
+/// \endcond
 
 //__________________________________________________________________________
-  AliMUONResponseFactory::AliMUONResponseFactory(const char* name)
+  AliMUONResponseFactory::AliMUONResponseFactory(const char* name,
+                                                 Bool_t isTailEffect)
     : TNamed(name, ""),
       fMUON(0),
-      fResponse0(0)
+      fResponse0(0),
+      fIsTailEffect(isTailEffect)
 {
 /// Standard constructor
   
@@ -52,41 +56,22 @@ ClassImp(AliMUONResponseFactory)
   AliMUONResponseFactory::AliMUONResponseFactory()
     : TNamed(),
       fMUON(0),
-      fResponse0(0)
+      fResponse0(0),
+      fIsTailEffect(kTRUE)
 {
 /// Default constructor
 
   AliDebug(1,Form("default (empty) ctor this=%p",this));
 }
 
-//__________________________________________________________________________
-AliMUONResponseFactory::AliMUONResponseFactory(const AliMUONResponseFactory& rhs)
- : TNamed(rhs)
-{
-/// Protected copy constructor
-
-  AliFatal("Not implemented.");
-}
-
 //__________________________________________________________________________
 
 AliMUONResponseFactory::~AliMUONResponseFactory()
 {
 /// Destructor
        AliDebug(1,Form("dtor this=%p",this));
+  delete fResponse0;
 }
-
-//__________________________________________________________________________
-AliMUONResponseFactory&  AliMUONResponseFactory::operator=(const AliMUONResponseFactory& rhs)
-{
-/// Protected assignement operator
-
-  if (this == &rhs) return *this;
-
-  AliFatal("Not implemented.");
-    
-  return *this;  
-}    
           
 //__________________________________________________________________________
 void AliMUONResponseFactory::BuildCommon() 
@@ -104,6 +89,7 @@ void AliMUONResponseFactory::BuildCommon()
   fResponse0->SetMaxAdc(4096);
   fResponse0->SetSaturation(3000);
   fResponse0->SetZeroSuppression(6);
+  fResponse0->SetTailEffect(fIsTailEffect);
 }       
         
 //__________________________________________________________________________
@@ -113,20 +99,21 @@ void AliMUONResponseFactory::BuildStation1()
 
   // Response for 4 mm of gas (station 1)
   // automatic consistency with width of sensitive medium in CreateGeometry ????
-  AliMUONResponseV0* responseSt1 = new AliMUONResponseV0;
+  AliMUONResponseV0 responseSt1;
   // Mathieson parameters from L.Kharmandarian's thesis, page 190
-  responseSt1->SetSqrtKx3AndDeriveKx2Kx4(0.7000); // sqrt(0.4900)
-  responseSt1->SetSqrtKy3AndDeriveKy2Ky4(0.7550); // sqrt(0.5700)
-  responseSt1->SetPitch(AliMUONConstants::PitchSt1()); // anode-cathode distance
-  responseSt1->SetSigmaIntegration(10.);
+  responseSt1.SetSqrtKx3AndDeriveKx2Kx4(0.7000); // sqrt(0.4900)
+  responseSt1.SetSqrtKy3AndDeriveKy2Ky4(0.7550); // sqrt(0.5700)
+  responseSt1.SetPitch(AliMUONConstants::PitchSt1()); // anode-cathode distance
+  responseSt1.SetSigmaIntegration(10.);
   // ChargeSlope larger to compensate for the smaller anode-cathode distance
   // and keep the same most probable ADC channel for mip's
-  responseSt1->SetChargeSlope(62.5); 
+  responseSt1.SetChargeSlope(62.5); 
   // assumed proportionality to anode-cathode distance for ChargeSpread
-  responseSt1->SetChargeSpread(0.144, 0.144);
-  responseSt1->SetMaxAdc(4096);
-  responseSt1->SetSaturation(3000);
-  responseSt1->SetZeroSuppression(6);
+  responseSt1.SetChargeSpread(0.144, 0.144);
+  responseSt1.SetMaxAdc(4096);
+  responseSt1.SetSaturation(3000);
+  responseSt1.SetZeroSuppression(6);
+  responseSt1.SetTailEffect(fIsTailEffect);
 
    for (Int_t chamber = 0; chamber < 2; chamber++) {
     fMUON->SetResponseModel(chamber, responseSt1); // special response      
@@ -140,7 +127,7 @@ void AliMUONResponseFactory::BuildStation2()
 /// Configuration for Chamber TC3/4 (Station 2) -----------
 
   for (Int_t chamber = 2; chamber < 4; chamber++) {
-    fMUON->SetResponseModel(chamber, fResponse0); // normal response        
+    fMUON->SetResponseModel(chamber, *fResponse0); // normal response        
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
   }
 }       
@@ -151,7 +138,7 @@ void AliMUONResponseFactory::BuildStation3()
 /// Configuration for Chamber TC5/6  (Station 3) ----------          
 
   for (Int_t chamber = 4; chamber < 6; chamber++) {
-    fMUON->SetResponseModel(chamber, fResponse0); // normal response        
+    fMUON->SetResponseModel(chamber, *fResponse0); // normal response        
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
   }
 }       
@@ -162,7 +149,7 @@ void AliMUONResponseFactory::BuildStation4()
 /// Configuration for Chamber TC7/8  (Station 4) ----------          
 
   for (Int_t chamber = 6; chamber < 8; chamber++) {
-    fMUON->SetResponseModel(chamber, fResponse0); // normal response        
+    fMUON->SetResponseModel(chamber, *fResponse0); // normal response        
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
   }
 }       
@@ -173,7 +160,7 @@ void AliMUONResponseFactory::BuildStation5()
 /// Configuration for Chamber TC9/10  (Station 5) ---------           
 
   for (Int_t chamber = 8; chamber < 10; chamber++) {
-    fMUON->SetResponseModel(chamber, fResponse0); // normal response        
+    fMUON->SetResponseModel(chamber, *fResponse0); // normal response        
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
   }
 }       
@@ -185,15 +172,21 @@ void AliMUONResponseFactory::BuildStation6()
 
     Bool_t resTrigV1 = fMUON->GetTriggerResponseV1();    
 
-    for (Int_t chamber = 10; chamber < 14; chamber++) {
-       
-       if (!resTrigV1) 
-           fMUON->SetResponseModel(chamber, new AliMUONResponseTrigger);
-       else 
-           fMUON->SetResponseModel(chamber, new AliMUONResponseTriggerV1);
-       
-       fMUON->Chamber(chamber).SetChargeCorrel(0); // same charge on both cathodes
-  }
+    for (Int_t chamber = 10; chamber < 14; chamber++) 
+    {
+      AliMUONResponse* response;
+      if (!resTrigV1) 
+      {
+        response = new AliMUONResponseTrigger;
+      }
+      else
+      {
+        response = new AliMUONResponseTriggerV1;
+      }
+           fMUON->SetResponseModel(chamber,*response); 
+      fMUON->Chamber(chamber).SetChargeCorrel(0); // same charge on both cathodes
+      delete response;
+    }
 }       
 
 //__________________________________________________________________________
@@ -201,6 +194,8 @@ void AliMUONResponseFactory::Build(AliMUON* where)
 {
 /// Construct MUON responses
 
+  AliDebugStream(1) << "Tail effect: " << fIsTailEffect << endl;
+
   fMUON = where;
 
   // Set default parameters