Possibility of On-Flight reconstruction added
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Sep 2004 09:27:42 +0000 (09:27 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Sep 2004 09:27:42 +0000 (09:27 +0000)
PHOS/AliPHOSPIDv1.cxx
PHOS/AliPHOSPIDv1.h
PHOS/AliPHOSTrackSegmentMakerv1.cxx
PHOS/AliPHOSTrackSegmentMakerv1.h

index 603aa10..1f3699d 100644 (file)
@@ -160,7 +160,9 @@ void AliPHOSPIDv1::Init()
   // Make all memory allocations that are not possible in default constructor
   // Add the PID task to the list of PHOS tasks
 
-  AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data()) ; 
+  AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
+  if(!gime)
+    gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data()) ; 
 
   if ( !gime->PID() ) 
     gime->PostPID(this) ;
@@ -170,6 +172,7 @@ void AliPHOSPIDv1::Init()
 void AliPHOSPIDv1::InitParameters()
 {
   // Initialize PID parameters
+  fWrite                   = kTRUE ;
   fRecParticlesInRun = 0 ; 
   fNEvent            = 0 ;            
   fRecParticlesInRun = 0 ;
@@ -220,7 +223,7 @@ void  AliPHOSPIDv1::Exec(Option_t *option)
   }
 
 
-  AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ; 
+  AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
  
   if (fLastEvent == -1) 
     fLastEvent = gime->MaxEvent() - 1 ;
@@ -250,7 +253,8 @@ void  AliPHOSPIDv1::Exec(Option_t *option)
         gBenchmark->GetCpuTime("PHOSPID"),  
         gBenchmark->GetCpuTime("PHOSPID")/nEvents) ;
   }
-  Unload();
+  if(fWrite)
+    Unload();
 }
 
 //____________________________________________________________________________
@@ -552,7 +556,11 @@ TVector3 AliPHOSPIDv1::GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSCpv
 
   //account correction to the position of IP
   Float_t xo,yo,zo ; //Coordinates of the origin
-  gAlice->Generator()->GetOrigin(xo,yo,zo) ;
+  if(gAlice && gAlice->GetMCApp() && gAlice->Generator())
+    gAlice->Generator()->GetOrigin(xo,yo,zo) ;
+  else{
+    xo=yo=zo=0.;
+  }
   TVector3 origin(xo,yo,zo);
   dir = dir - origin ;
 
@@ -609,6 +617,7 @@ void  AliPHOSPIDv1::MakePID()
     // now get the signals probability
     // s(pid) in the Bayesian formulation
     // Tof
+
     stof[AliESDtrack::kPhoton][index]   = fTFphoton->Eval(recpar->ToF()) ; 
     stof[AliESDtrack::kPi0][index]      = fTFphoton->Eval(recpar->ToF()) ; // pi0 are detected via decay photon 
     stof[AliESDtrack::kElectron][index] = fTFelectron->Eval(recpar->ToF()) ; 
@@ -619,7 +628,7 @@ void  AliPHOSPIDv1::MakePID()
     stof[AliESDtrack::kEleCon][index]   = fTFphoton->Eval(recpar->ToF()) ; // a conversion electron has the photon ToF
     stof[AliESDtrack::kKaon0][index]    = 0 ; // do not know yet what to to with K0
     stof[AliESDtrack::kMuon][index]     = 0 ; // do not know yet what to do with muon
-
+    
   }
   for (index = 0 ; index < kSPECIES ; index++) 
     pid[index] /= nparticles ; 
@@ -999,16 +1008,18 @@ void  AliPHOSPIDv1::WriteRecParticles()
 
   TClonesArray * recParticles = gime->RecParticles() ; 
   recParticles->Expand(recParticles->GetEntriesFast() ) ;
-  TTree * treeP =  gime->TreeP();
-  
-  //First rp
-  Int_t bufferSize = 32000 ;
-  TBranch * rpBranch = treeP->Branch("PHOSRP",&recParticles,bufferSize);
-  rpBranch->SetTitle(BranchName());
-  
-  rpBranch->Fill() ;
-  gime->WriteRecParticles("OVERWRITE");
-  gime->WritePID("OVERWRITE");
+  if(fWrite){
+    TTree * treeP =  gime->TreeP();
+    
+    //First rp
+    Int_t bufferSize = 32000 ;
+    TBranch * rpBranch = treeP->Branch("PHOSRP",&recParticles,bufferSize);
+    rpBranch->SetTitle(BranchName());
+    
+    rpBranch->Fill() ;
+    
+    gime->WriteRecParticles("OVERWRITE");
+    gime->WritePID("OVERWRITE");
+  }
 }
 
index 71fade1..c41857e 100644 (file)
@@ -67,6 +67,8 @@ public:
   void SetParameterPhotonBoundary(Int_t i, Float_t param);
   void SetParameterPi0Boundary   (Int_t i, Float_t param);
 
+  //Switch to "on flyght" mode, without writing to TreeR and file  
+  void SetWriting(const Bool_t toWrite = kFALSE){fWrite = toWrite;} 
   void Print() const ; 
 
   virtual const char * Version() const { return "pid-v1" ; }  
@@ -90,11 +92,12 @@ private:
   void          PrintRecParticles(Option_t * option) ;
   virtual void  WriteRecParticles() ; 
   void          SetParameters() ; //Fills the matrix of parameters
-  void Unload(); 
+  void          Unload(); 
 
 private:
 
   Bool_t      fDefaultInit;              //! kTRUE if the task was created by defaut ctor (only parameters are initialized)
+  Bool_t      fWrite ;                   //! To write result to file 
   Int_t       fNEvent ;                  //! current event number
   TString     fFileNamePrincipalPhoton ; //  File name of the photon principals
   TString     fFileNamePrincipalPi0 ;    //  File name of the pi0 principals
index 85a2156..4eec910 100644 (file)
@@ -236,7 +236,9 @@ void  AliPHOSTrackSegmentMakerv1::Init()
 {
   // Make all memory allocations that are not possible in default constructor
   
-  AliPHOSGetter* gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
+  AliPHOSGetter* gime = AliPHOSGetter::Instance();
+  if(!gime)
+    gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
   
   fLinkUpArray  = new TClonesArray("AliPHOSLink", 1000); 
   if ( !gime->TrackSegmentMaker() ) {
@@ -255,6 +257,7 @@ void  AliPHOSTrackSegmentMakerv1::InitParameters()
   fCpvFirst  = 0 ;   
   fCpvLast   = 0 ;   
   fLinkUpArray = 0 ;
+  fWrite                   = kTRUE ;
   fTrackSegmentsInRun       = 0 ; 
   SetEventRange(0,-1) ;
 }
@@ -389,7 +392,7 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
     return ; 
   }
   
-  AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ;  
+  AliPHOSGetter * gime = AliPHOSGetter::Instance() ;  
  
   const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
 
@@ -434,7 +437,8 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
           gBenchmark->GetCpuTime("PHOSTSMaker"), 
           gBenchmark->GetCpuTime("PHOSTSMaker")/nEvents) ;
    }
-  Unload();
+  if(fWrite) //do not unload in "on flight" mode
+    Unload();
 }
 
 //____________________________________________________________________________
@@ -480,15 +484,17 @@ void AliPHOSTrackSegmentMakerv1::WriteTrackSegments()
   TClonesArray * trackSegments = gime->TrackSegments() ; 
   trackSegments->Expand(trackSegments->GetEntriesFast()) ;
 
-  TTree * treeT = gime->TreeT();
-  //First TS
-  Int_t bufferSize = 32000 ; 
-  TBranch * tsBranch = treeT->Branch("PHOSTS",&trackSegments,bufferSize);
-  tsBranch->Fill() ;  
-
-  gime->WriteTracks("OVERWRITE");
-  gime->WriteTrackSegmentMaker("OVERWRITE");
+  if(fWrite){ //We write TreeT
+    TTree * treeT = gime->TreeT();
+    
+    //First TS
+    Int_t bufferSize = 32000 ; 
+    TBranch * tsBranch = treeT->Branch("PHOSTS",&trackSegments,bufferSize);
+    tsBranch->Fill() ;  
+    
+    gime->WriteTracks("OVERWRITE");
+    gime->WriteTrackSegmentMaker("OVERWRITE");
+  }
 }
 
 
index c124720..db286dd 100644 (file)
@@ -46,6 +46,8 @@ public:
           void   MakeLinks() const;      //Evaluates distances(links) between EMC and CPV
           void   MakePairs() ;           //Finds pairs(triplets) with smallest link
   virtual void   Print() const ;
+  //Switch to "on flyght" mode, without writing to TreeR and file  
+  void SetWriting(const Bool_t toWrite = kFALSE){fWrite = toWrite;} 
   virtual void   SetMaxEmcCPVDistance(Float_t r){ fRcpv = r ;} //Maximal distance (in PHOS plane) 
                                                                //between EMCrp and CPVrp
   virtual void   SetMaxCPVTPCDistance(Float_t r){ fRtpc = r ;} //Maximal distance 
@@ -74,6 +76,7 @@ private:
 private:  
 
   Bool_t  fDefaultInit;               //! Says if the task was created by defaut ctor (only parameters are initialized)
+  Bool_t  fWrite ;                   // Write Tracks to TreeT  
  
   Int_t fNTrackSegments ; // number of track segments found